我在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代替什么,我都得到相同的结果。
谁能看到我做错了什么?
谢谢, 彼得
答案 0 :(得分:2)
cv::Mat
的数据成员实际上是uchar*
,而不是char*
而不管实际的矩阵类型(即CV_8U
),我猜您可以通过迭代kernel.data
来打印值,而不会将数据从uchar*
转换为char*
(或者使用手表检查它们而不执行相同操作)以及为什么您看不到负数。
此外,您有更好的语法来实现相同的
cv::Mat kernel = (cv::Mat_<char>(1,3) << -1, 0, -1);