[英]OpenCV take pixel color values
我知道有很多類似的問題,盡管由於某些原因我似乎找不到我想要的東西。 我需要采用RGB(Open_cv中的BGR)值。 我嘗試過的並且我認為是錯誤的(因為使用滴管工具獲取jpeg圖像的一個隨機像素值發現了從未出現在我的程序中的值)。 碼:
cv::Vec3b intensity;
intensity = img1.at<cv::Vec3b>(i, j);
blue1 = intensity.val[0];
green1 = intensity.val[1];
red1 = intensity.val[2];
您的功能是正確的。 只需檢查一下您是否沒有得到,例如, i,j
調換。 第一個索引是該行 。 請參閱此處的示例。
還要檢查另一件事:blue1,green1,red1的類型是什么? 應為unsigned char
,即uint8_t
或等效的unsigned char
。 而且,如果要這樣做,您應該注意如何在std::cout
上打印值(需要強制轉換為int
)。
我推薦你
cv::Mat image; //Some image
uint8_t r,g,b;
if (image.channels() == 1) { // gray-level image
g=image.at<uchar>(j,i);
} else if (image.channels() == 3) { // RGB color image
r=image.at<cv::Vec3b>(j,i)[0];//R
b=image.at<cv::Vec3b>(j,i)[1];//B
g=image.at<cv::Vec3b>(j,i)[2];//G
}
祝一切順利
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.