当img(roi)没有返回正确的值时,如何正确提取ROI

时间:2012-10-18 16:02:57

标签: c++ opencv

我过去做过这个并且工作正常,但我的功能很奇怪。我试图提取图像的roi。这是我的代码:

cv::Rect roi(x - 1, y - 1, 3, 3);
cv::Mat patch_t(current_frame, roi);

cout << (int)current_frame.at<unsigned char>(y - 1, x - 1) << endl;
cout << (int)patch_t.at<unsigned char>(0, 0) << endl;

这两个cout调用应该返回相同的值,但它们不是。一个返回150,而另一个返回37.这显然不起作用。如何在不复制图像的情况下提取图像的ROI?

由于

1 个答案:

答案 0 :(得分:1)

您的输入框架是彩色的吗?

只有当current_frame是CV_8UC1或CV_8SC1类型矩阵时,您的代码才有效。

使用current_frame.at<Vec3b>(i, j)访问RGB像素。另请注意,有时灰度图像被读取为3通道矩阵。