Opencv错误在iPhone中裁剪图像

时间:2013-02-04 06:06:14

标签: c++ iphone objective-c image-processing opencv

我使用以下代码设置ROI并裁剪图像。

cv::Mat testMat = [CaptureViewController cvMatWithImage:self.storeImage];
cv::Rect roi(faces[i].x, faces[i].y, faces[i].width, faces[i].height);
cv :: Mat image_roi;
image_roi = testMat ( roi );

self.CroppedImage = [CaptureViewController imageWithCVMat:image_roi];
UIImageWriteToSavedPhotosAlbum(self.CroppedImage, self,  nil,nil);

但我得到以下错误:

<Error>: CGContextDrawImage: invalid context 0x0
OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows)

我设置了断点并在此处测试了上面的错误image_roi = testMat ( roi );

但我无法追查这个问题的原因。我在上面的代码中的任何地方都错了吗?

2 个答案:

答案 0 :(得分:0)

尝试克隆()对象。

image_roi = testMat(roi).clone();

答案 1 :(得分:0)

我知道回答这个问题为时已晚,但也许会帮助其他人面临类似的问题。这个错误似乎很自我描述。 它说你的roi(感兴趣的区域)矩形似乎超出了cv :: Mat的范围。

确保(左上角x,左上角y,宽度,高度)落在testMat的范围内:

NaN