我正在尝试学习OpenCV并且已经阅读了各种教程和书籍。我遇到了一个奇怪的问题。我在OpenCV中有一个3行,3列3通道矩阵,我命名为test。我用这样的虚拟数据填充它:
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 ++。
谢谢!
答案 0 :(得分:0)
您要打印的值是存储的整数值的ASCII字符。
例如,如果您查找ASCII表,请在此网址http://simple.wikipedia.org/wiki/ASCII
你会看到小数50等于字符&#39; 2&#39;和十进制100是&#39; d&#39;。
在C ++中,如果您将值设置为int
变量,然后将int
转换为char
,则会得到此结果。