我正试图从openCV和C ++中的RGB图像中获取子图像。我已经看到了关于这个主题的其他主题,但它对我没有用。
这是我使用的代码:
Mat src = imread("Images/00011_00025.ppm");
Rect crop(1, 1, 64, 67);
Mat rez = src(crop);
图像为64x67维度,所以我不明白为什么我在控制台中出现以下错误:
断言失败(0< = roi.x&& 0< = roi.width&& roi.x + roi.width< = m.cols&& 0< = roi .y&& 0< = roi.height&& roi.y + roi.height< = m.rows)
有关此错误原因的任何想法?
答案 0 :(得分:1)
Rect crop(1, 1, 64, 67);
左上角的矩形位于(1,1)位置,其大小设置为64x67。
Mat rez = src(crop);
使用此矩形裁剪图像时,您的边界已用完,因为矩形的偏移量为一个像素,但与要裁剪的图像大小相同。 您可以手动计算宽度和高度的偏移量,或者,这是我首选的裁剪解决方案,使用cv::Range。
使用范围,您可以定义行和列跨度以执行裁剪:
cv::Range rows(1, 64);
cv::Range cols(1, 67);
Mat rez = src(rows, cols);