我知道有很多类似的问题,尽管出于某些原因,我似乎找不到我想要的东西。我需要采用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的交换。第一个索引是行。参见示例here

要检查的另一件事:blue1,green1,red1的类型是什么?应该是unsigned char,也就是uint8_t或等效的名称。而且,如果要这样做,您应该注意如何在std::cout上打印值(需要强制转换为int)。

10-08 12:41