OpenCV个人像素访问

时间:2015-06-10 02:19:52

标签: c++ opencv

我正在尝试学习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 ++。

谢谢!

1 个答案:

答案 0 :(得分:0)

您要打印的值是存储的整数值的ASCII字符。

例如,如果您查找ASCII表,请在此网址http://simple.wikipedia.org/wiki/ASCII

你会看到小数50等于字符&#39; 2&#39;和十进制100是&#39; d&#39;。

在C ++中,如果您将值设置为int变量,然后将int转换为char,则会得到此结果。