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

时间:2013-01-21 20:27:07

标签: ios opencv

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

如果需要,我可以做一些像this这样复杂的事情,但我只需要一个矩形裁剪,所以我认为有一种更简单的方法。我只是不明白为什么设置投资回报率对我不起作用!

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

src.copyTo(croppedImage);


[displayView setImage:[UIImage imageWithCVMat:src]];

^^^无法正常工作,只显示原始图像

1 个答案:

答案 0 :(得分:22)

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

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

中分配的数据
cv::Mat croppedImage = src(myRoi);

2 - 复制数据。

cv::Mat croppedImage;
cv::Mat(src, myRoi).copyTo(croppedImage)

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