OpenCV 2.4.3(iOS)中的裁剪垫图像
我正在尝试使用OpenCV for iOS裁剪视频流中的图像。我不想做任何花哨的事情,只是裁剪图像,然后显示出来。我试过了,但两种方法都不管用。作为委托方法,我获得了传入的当前cv::Mat图像,因此我所需要的只是创建裁剪效果的代码 我可以做一些像需要一样复杂的事情,但我只需要一个矩形的裁剪,所以我认为有一个更简单的方法。我只是不明白为什么设置投资回报率对我不起作用OpenCV 2.4.3(iOS)中的裁剪垫图像,ios,opencv,Ios,Opencv,我正在尝试使用OpenCV for iOS裁剪视频流中的图像。我不想做任何花哨的事情,只是裁剪图像,然后显示出来。我试过了,但两种方法都不管用。作为委托方法,我获得了传入的当前cv::Mat图像,因此我所需要的只是创建裁剪效果的代码 我可以做一些像需要一样复杂的事情,但我只需要一个矩形的裁剪,所以我认为有一个更简单的方法。我只是不明白为什么设置投资回报率对我不起作用 cv::Rect myROI(10, 10, 100, 100); cv::Mat croppedImage = src(myRO
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 cropedimage=cv::Mat(src,myRoi).clone();
)我以前试过你的第一个建议,当我展示它时,它看起来非常糟糕(有点像电视静电)。你提到的第二种方法对我很有效,谢谢@Jameo您的显示方法可能假设数据是连续的,而使用第一种方法时,这是不正确的。第二种建议对我有效,而第一种建议失败。@jarora-您得到了什么样的错误?请注意,在第一种情况下,croppedImage和myRoi图像数据ptr指向一个数据对象谢谢!你刚刚救了我。在Java
(Android)中,我可以使用`publicmat(matm,rectroi)代码>-例如-Mat crapped=新Mat(src,myRoi)代码>-效果很好。在iOS中,我尝试了第一种方法,但没有成功,现在我使用第二种方法,效果很好。我面临着同样的问题。你能看看我的帖子吗