簡體   English   中英

OpenCV獲取像素顏色值

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

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