小编use*_*191的帖子

将UIImage转换为cv :: Mat

我有一个UIImage,它是从iPhone相机拍摄的照片,现在我希望将UIImage转换为cv :: Mat(OpenCV).我使用以下代码行来完成此任务:

-(cv::Mat)CVMat
{

CGColorSpaceRef colorSpace = CGImageGetColorSpace(self.CGImage);
CGFloat cols = self.size.width;
CGFloat rows = self.size.height;

cv::Mat cvMat(rows, cols, CV_8UC4); // 8 bits per component, 4 channels

CGContextRef contextRef = CGBitmapContextCreate(cvMat.data,                 // Pointer to backing data
                                                cols,                      // Width of bitmap
                                                rows,                     // Height of bitmap
                                                8,                          // Bits per component
                                                cvMat.step[0],              // Bytes per row
                                                colorSpace,                 // Colorspace
                                                kCGImageAlphaNoneSkipLast |
                                                kCGBitmapByteOrderDefault); // Bitmap info flags

CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), self.CGImage);
CGContextRelease(contextRef);

return cvMat;
}
Run Code Online (Sandbox Code Playgroud)

此代码适用于横向模式下的UIImage,但当我使用与从纵向模式拍摄的图像相同的代码时,图像会向右旋转90度.

我是iOS和Objective C的新手,因此我无法弄清楚出了什么问题. …

opencv objective-c ios

31
推荐指数
2
解决办法
1万
查看次数

我的Opencv应用程序处理速度很慢

我正在构建一个OpenCV应用程序,它从相机中捕获视频,并在删除背景后将其覆盖在另一个视频上.

我无法达到合理的速度,因为它以大约1 fps的速度播放输出,而我的背景移除工作速度为3fps.

有没有办法以正常速度显示背景视频并以3fps覆盖已处理的视频?

我试着评论我的代码,我意识到问题主要在于渲染部分本身.我尝试显示视频和我的网络摄像头,我注意到用openCV显示的实际fps和视频的fps有所下降.

这是示例代码:

 void main()
{
    CvCapture* capture, *Vcap;
    capture = cvCaptureFromCAM(0);
    if(!capture)
    {
        printf("Video Load Error");
    }

    Vcap = cvCaptureFromAVI("bgDemo.mp4");
    //printf("\nEntered BGR");
    if(!Vcap)
    {
        printf("Video Load Error");
    }

    while(1)
    {

        IplImage* src = cvQueryFrame(Vcap);
        if(!src)
        {
            Vcap = cvCaptureFromAVI("bgDemo.mp4");
            continue;
        }
        IplImage* bck1 = cvCreateImage(cvGetSize(src),8,3);
        cvResize(src,bck1,CV_INTER_LINEAR);

        cvShowImage("BCK",bck1);
        cvWaitKey(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

c opencv video-capture image-processing visual-c++

2
推荐指数
1
解决办法
5156
查看次数

输出以下代码的原因:

我有几行代码,我无法理解这个输出的原因..

int main()
{
int a=5;
float b=10.5,c=11.0;
printf("%d",b);
printf("\n%d",c);
printf("\n%f",a);
return 0; 
}
Run Code Online (Sandbox Code Playgroud)

Visual C++中的O/p: - 0,0,0.000000

gcc编译器: - 0,0,1.000000

c

2
推荐指数
1
解决办法
98
查看次数

检测二进制图像中的最大Blob

我想为我的项目检测二进制图像中最大的BLOB.你能指导我怎么做?

谢谢

c opencv image-processing

1
推荐指数
1
解决办法
1420
查看次数

OpenCV支持哪种图像格式

对于我的项目,需要将图像(某公司的徽标)覆盖在主屏幕上,我想只看到徽标而不是图像的边框或多余区域,我甚至尝试覆盖.png图像但随后边框也会以黑色和徽标一起显示.

任何人都可以让我知道我应该使用哪种格式的图像因此只显示我的图像的徽标而不是图像的矩形部分中的额外部分.

如果您需要更多说明......请告诉我

谢谢 :)

opencv

1
推荐指数
1
解决办法
4943
查看次数