6

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

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

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

src.copyTo(croppedImage);


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

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

4

1 回答 1

24

您的代码中的问题是,通过复制 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();

于 2013-01-21T21:12:46.893 回答