我的图像是RGB图像 . 我想获得一个唯一值(例如unicode值)来表示某个像素的RGB颜色值 . 例如,如果像素红色通道= 23,绿色通道= 200,蓝色通道= 45,则此RGB颜色可以用232765表示 . 我希望是否有直接的opencv c函数从像素中获取这样的值 . 请注意,此唯一值对于该RGB值应该是唯一的 . 我想要这样的东西,我知道这是不正确的 .
uniqueColorForPixel_i_j=(matImage.at<Vec3b>(i,j)).getUniqueColor();
如果我们能得到像素的标量值,我希望可以做些什么 . 并且就像RNG可以从数字生成随机标量RGB值一样,我们可以得到反...
1 回答
只是一个小示例代码,用于说明如何直接将
Vec3b
传递给函数,以及另一种移位和接近的方法 .该代码基于this answer .
UPDATE
我还添加了一个简单的struct
BGR
,它可以更轻松地处理Vec3b
和unsigned
之间的转换 .UPDATE 2
您问题中的代码:
没有't work because you'试图在没有这种方法的
Vec3b
上调用方法getUniqueColor()
. 您应该将Vec3b
作为unsigned getUniqueColor(const Vec3b& v);
的参数传递 .代码应澄清这一点: