OpenCV:无法使用负数制作矩阵

时间:2012-01-12 21:05:18

标签: visual-studio-2010 opencv matrix

我在Windows 7 32位应用程序的MS Visual C ++ 2010上使用OpenCV 2.2。

我正在尝试制作以下矩阵。 [-1 0 1]。

我试试

cv::Mat Kernel = cv::Mat::zeros(1, 3, CV_8S );

Kernel.data[0] = -1;

Kernel.data[2] = 1;

我得到[255 0 1]

无论我用CV_8S代替什么,我都得到相同的结果。

谁能看到我做错了什么?

谢谢, 彼得

1 个答案:

答案 0 :(得分:2)

cv::Mat的数据成员实际上是uchar*,而不是char*而不管实际的矩阵类型(即CV_8U),我猜您可以通过迭代kernel.data来打印值,而不会将数据从uchar*转换为char*(或者使用手表检查它们而不执行相同操作)以及为什么您看不到负数。

此外,您有更好的语法来实现相同的

cv::Mat kernel = (cv::Mat_<char>(1,3) << -1, 0, -1);