numpy - 如何计算图像中的 RGB 或 HSV channel 组合?

标签 numpy opencv colors

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

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

最佳答案

你可以使用 np.unique具有进行分组的新 axis 参数功能 -

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

sample 运行-

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]])

关于numpy - 如何计算图像中的 RGB 或 HSV channel 组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49320245/

相关文章:

python - 为什么 np.clip(pd.Series(range(10)), 2,3) 返回一个系列?

opencv - 机器学习 : sign visibility

python - 从python-opencv中的图像获取x,y点

r - 根据 R 中数据框的列数为树状图的末端分支(或叶子)着色

css - 如何破解 linear-gradient() with currentColor bug in chrome

python - 创建多个 numpy 数组

python - 在 pandas 中合并列的更有效方法

ios - Tesseract CPU 使用率 100%

matlab - 如何在 MATLAB 中定义自定义颜色快捷方式(如 'r' 、 'g' 、 'b' 、 'k' 等)

python - 改善非常慢的 python 代码的执行时间