如何计算图像中的RGB或HSV通道组合?

时间:2018-03-16 11:58:10

标签: numpy opencv colors

我使用python opencv加载一个有形状(30,100,3)的图像,现在想要计算所有颜色的频率,按颜色,我不是指个别频道,我的意思是频道组合。含义3频道列表,例如红色为[255,0,0],黄色为[255,255,0],另一种颜色为[100,100,100]。所以我希望将最后一个轴(通道)作为一个整体来对待并计算其频率。

opencv或numpy中是否有任何内置函数可以轻松将3通道列表视为一个元素并计算其频率?

1 个答案:

答案 0 :(得分:4)

您可以使用np.unique及其新的axis参数功能进行分组 -

np.c_[np.unique(im.reshape(-1,3), axis=0, return_counts=1)]

示例运行 -

In [56]: im
Out[56]: 
array([[[255, 255, 255],
        [255,   0,   0]],

       [[255,   0, 255],
        [255, 255, 255]]])

In [57]: np.c_[np.unique(im.reshape(-1,3), axis=0, return_counts=1)]
Out[57]: 
array([[255,   0,   0,   1],
       [255,   0, 255,   1],
       [255, 255, 255,   2]])