我是OpenCV图像处理的新手。我的任务很简单。我必须获得1/4的图像(低1/4)。图片的大小为320 x 240.我在Rect
对象中使用了ROI Mat
来获取它。
Mat img_roi;
img_roi= image(cv::Rect(0,180,320,240));
我收到以下错误:
first.exe中0x7669c41f的第一次机会异常:Microsoft C ++异常:cv :: Exception>在内存位置0x0041ec30 .. first.exe中0x7669c41f处的未处理异常:Microsoft C ++异常:cv ::异常位于>内存位置0x0041ec30 ..
如果我在上面的代码中指定Rect(0,0,320,60)
,我得到的结果(上半部分)和代码适用于其他一些值,例如Rect (0,0,320,240)
,即完整图像。但不是季度值较低(0,180,320,240)。
我还应该告诉我使用Iplimage
获得结果。只有Mat
对象会产生问题。
如果有人能指导我解决这个问题,我真的很感激。
答案 0 :(得分:2)
图片的下1/4为Rect(0,180,320,60)
。它不是Rect(0,180, 320, 240)
,也不是Rect(0,0,320,60)
。
答案 1 :(得分:2)
cv::Rect
的论点是:
cvRect(int x, int y, int width, int height);
这里x和Y代表左上角,而宽度和高度代表你想要在图像中拥有的列数和行数。
在您的情况下:rows = 320,cols = 240
所以要使左下角使用:
Rect( 0, image.rows/2, image.cols/2, image.rows/2 )
如果您想要右下方图片,请使用:
Rect( image.cols/2, image.rows/2, image.cols/2, image.rows/2 )