簡體   English   中英

使用cv :: Mat :: at運算符訪問像素值

[英]Accessing pixel value using cv::Mat::at operator

我正在使用OpenCV 2.3.1(c ++ api),當我嘗試獲取彩色圖像的像素值時,得到的結果非常奇怪,而不是數值,輸出是這樣的:?,*,|。 等等,例如,代碼如下:

cv::Mat inputImage = cv::imread("Picture1.jpg");
std::cout << inputImage.at<cv::Vec3b>(x,y)[0] << std::endl; //print B component

其中x和y是鼠標回調函數的坐標。 我認為該類型是錯誤的,您是否知道我還能用什么代替Vec3b?

我認為發生問題是因為您使用的是“ at(x,y)”。 文檔說,第一個參數應為“基於0的行索引”,第二個參數應為“基於0的列索引”。 因此,您應該調用at(y,x)或at(cv :: Point(x,y))。

檢查http://opencv.willowgarage.com/documentation/cpp/basic_structures.html

OpenCV中的Vec3b是typedef Vec<uchar, 3> Vec3b; 因此,我想您需要在cout流程中將其轉換為整數。

類似於std::cout << (int) inputImage.at<cv::Vec3b>(x,y)[0] << std::endl; //print B component std::cout << (int) inputImage.at<cv::Vec3b>(x,y)[0] << std::endl; //print B component

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM