OpenCV-无法访问CV_8SC1的像素值

时间:2014-07-23 08:00:59

标签: c++ opencv

我有一个保存CV_8SC1类型数据的cv :: Mat对象,因为我还需要存储负值。

cv::Mat layerMap;
layerMap = Mat(widgetSize.width(), widgetSize.height(), CV_8SC1);
layerMap = cv::Scalar::all(-1);

现在我想访问特定行和列的值,所以我写了这个 -

int temp = layerMap.at<int>(canvasX, canvasY);

但这是一个断言 -

OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] &&
(unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) &&
((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) ==
elemSize1()) in cv::Mat::at

canvasX和canvasY都在layerMap的大小范围内,如调试器中所示。我以前使用相同的at<int>(x,y)方法访问cv_32S图像中的数据。

1 个答案:

答案 0 :(得分:2)

您正在创建一个包含8位有符号元素的矩阵(CV_8SC1)。要阅读它们,请使用signed char访问权限:

schar temp = layerMap.at<schar>(canvasX, canvasY);