[英]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.