【问题标题】:How to count RGB or HSV channel combination in an image?如何计算图像中的 RGB 或 HSV 通道组合?
【发布时间】:2018-08-25 11:47:37
【问题描述】:

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

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

【问题讨论】:

  • 所以,输出将是一个数组,对吧?它的形状应该是什么?它最多有 256**3 个元素。
  • 输出可以是[[R,G ,B, frequency ], [R,G ,B, frequency ], ....]

标签: numpy opencv colors


【解决方案1】:

您可以将 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]])

【讨论】:

  • 谢谢!完美的解决方案!
猜你喜欢
  • 1970-01-01
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多