2015-06-10 76 views
1

我想學習OpenCV,並已經通過各種教程和書籍。我遇到了一個奇怪的問題。我在OpenCV中有一個3行3列3通道矩陣,我命名爲test。我用虛擬數據填充它,如下所示: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]]] 

到目前爲止好。

我想要訪問每個單獨的RGB值的行1,列1的我的文檔和計算器上其他的答案中讀做爲單獨的像素的訪問以下:
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

要打印的值是存儲的整數值的ASCII字符。

例如,如果您查找ASCII表,說在這個網址,http://simple.wikipedia.org/wiki/ASCII

你會看到,十進制50相當於字符「2」和十進制100是「d」。

在C++中,如果將值設置爲int變量,然後將該int轉換爲char,則會得到此結果。

+0

非常感謝!我知道這很簡單,我只是俯視。我一直盯着它,不知道我錯過了什麼。我會在工作中把它塞滿一整天。 :) 再次感謝! –