我正在尝试学习OpenCV,并一直在通过各种教程和书籍。我遇到了一个奇怪的问题。我有一个3行,3列3通道矩阵在OpenCV我命名为测试。我用这样的虚拟数据填充它:
Mat test(3,3, CV_8UC3, Scalar(50,100,200));
当我打印出矩阵时,我得到:
[[[50, 100, 200], [50, 100, 200], [50, 100, 200]],
[[50, 100, 200], [50, 100, 200], [50, 100, 200]],
[[50, 100, 200], [50, 100, 200], [50, 100, 200]]]
到目前为止一切顺利。
我想访问第1行第1列的每个单独的RGB值。我在StackOverFlow的文档和其他答案中阅读,为单个像素访问做以下操作:
test.at (1,1) [0];
当我打印出这些值时,我得到:
test.at<Vec3b>(1,1)[0] = 2
test.at<Vec3b>(1,1)[1] = d
test.at<Vec3b>(1,1)[2] = /310
你知道我做错了什么吗?我在Mac上运行OpenCV 2.10。语言是c++。
谢谢!
打印出来的值是存储整数值的ASCII字符。
例如,如果你查找ASCII表,在这个url, http://simple.wikipedia.org/wiki/ASCII
您将看到小数50相当于字符'2',小数100等于'd'。
在c++中,如果您将值设置为int
变量,然后将int
转换为char
,则会得到此结果。