我正在尝试使用适用于 iOS 的 OpenCV 从视频流中裁剪图像。我并不想做任何花哨的事情,只是裁剪图像并显示它。我试过this , 和 this ,似乎都不适合我。作为一个委托(delegate)方法,我得到了传入的当前 cv::Mat 图像,所以我只需要创建裁剪效果的代码。
我可以做像 this 这样复杂的事情如果需要的话,但我只需要一个矩形裁剪,所以我认为有一种更简单的方法。我只是不明白为什么设置投资返回率对我不起作用!
cv::Rect myROI(10, 10, 100, 100);
cv::Mat croppedImage = src(myROI);
src.copyTo(croppedImage);
[displayView setImage:[UIImage imageWithCVMat:src]];
^^^不工作,只显示原始图像
最佳答案
您的代码中的问题是,通过复制 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();
)
关于ios - OpenCV 2.4.3 (iOS) 中的 Crop Mat 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14446643/