我正在努力学习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++。
谢谢!
发布于 2015-06-10 02:36:58
打印出来的值是存储的整数值的ASCII字符。
例如,如果您查找ASCII表,比如这个url,http://simple.wikipedia.org/wiki/ASCII
您将看到小数点50等于字符'2‘,小数点100等于'd’。
在C++中,如果将值设置为int
变量,然后将该int
转换为char
,则会得到这个结果。
https://stackoverflow.com/questions/30746014
复制相似问题