【问题标题】:How do I find the most common RGBA pixel value in a image? [duplicate]如何找到图像中最常见的 RGBA 像素值? [复制]
【发布时间】:2020-08-11 19:06:51
【问题描述】:

我有一张狗的图像,形状为(432, 575, 4)。 ndarray 中的第 3 维包含每个像素的 RGBA 值。我想找出最常见的像素是什么,即模式。

对于二维数组,我可以使用以下行:np.unique(a, axis=0, return_counts=True)

但是,我不知道如何只比较 3d 数组的第 3 维中的向量。这个问题很相似,但它只适用于二维数组:Finding the most common subarray within a numpy array。如果我只是将 axis 更改为 '=1`,它不会给我所需的结果。

【问题讨论】:

  • 在我看来不像是复制品...

标签: python numpy jupyter-notebook


【解决方案1】:

由于您不关心图像的形状,您可以使用reshape展平您的图像并使用链接的答案:

rgba, counts = np.unique(a.reshape(-1,4), axis=0, return_counts=True)

# the mode here
rgba[np.argmax(counts)]

【讨论】:

  • 它有效,我现在可以使用np.where()找到这些像素的位置
  • 我确实有一个问题。有没有一种方法可以在不必重塑数组的情况下实现结果?
  • @programmer1 我不知道。虽然,reshape 的开销很小,因为它可以在 a 的数据上工作而无需复制。
  • 谢谢。我更喜欢将其作为解决方案,但您的方式也适用。它只是增加了一个额外的步骤,这意味着更多的工作,并且在重塑时可能会出现人为错误,尤其是对于大维度数组。
猜你喜欢
  • 2020-10-19
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多