我过去做过这个并且工作正常,但我的功能很奇怪。我试图提取图像的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?
由于
答案 0 :(得分:1)
您的输入框架是彩色的吗?
只有当current_frame
是CV_8UC1或CV_8SC1类型矩阵时,您的代码才有效。
使用current_frame.at<Vec3b>(i, j)
访问RGB像素。另请注意,有时灰度图像被读取为3通道矩阵。