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];

我推荐你

  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
 }

祝一切顺利

你的功能是正确的。只是检查一下你没有得到,例如 i,j 交换。第一个索引是 。请参阅示例 here

还要检查的另一件事:blue1、green1、red1 的类型是什么?应该是unsigned char、a.k.a。 uint8_t,或等价物。如果这样做,您应该小心如何在 std::cout 上打印值(需要强制转换为 int)。