我知道有很多类似的问题,尽管出于某些原因,我似乎找不到我想要的东西。我需要采用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
)。