OpenCV 2.4.3(iOS)中的裁剪垫图像

Jam*_*meo 6 opencv ios

我正在尝试使用OpenCV for iOS裁剪来自视频流的图像.我不是想做任何花哨的事情,只需裁剪图像,然后显示它.我试过这个,这个,似乎对我都不起作用.作为委托方法,我得到了传入的当前cv :: Mat图像,所以我需要的是创建裁剪效果的代码.

我可以做一些那样复杂如果需要的话,但我只需要一个长方形的作物,所以我觉得还有一个更简单的方法.我只是不明白为什么设置ROI不适合我!

cv::Rect myROI(10, 10, 100, 100);
cv::Mat croppedImage = src(myROI);

src.copyTo(croppedImage);


[displayView setImage:[UIImage imageWithCVMat:src]];
Run Code Online (Sandbox Code Playgroud)

^^^不工作,只显示原始图像

Tob*_*nst 22

您的代码中的问题是,通过复制src图像,您可以将整个图像复制到裁剪后的图像.有两种可能性:

1 - 不复制数据.和你一样.但没有第二步.在这种情况下,croppedImage不是真正的副本,它指向src中分配的数据:

cv::Mat croppedImage = src(myRoi);
Run Code Online (Sandbox Code Playgroud)

2 - 复制数据.

cv::Mat croppedImage;
cv::Mat(src, myRoi).copyTo(croppedImage)
Run Code Online (Sandbox Code Playgroud)

(一线法 - cv::Mat croppedImage = cv::Mat(src, myRoi).clone();)

  • @Jameo你的显示方法可能假设数据是连续的,使用第一种方法是不正确的. (2认同)