【问题标题】:How to assign color to pixel according to its mean value如何根据平均值为像素分配颜色
【发布时间】:2020-02-08 23:12:25
【问题描述】:

image_copy 是 RGB 图像。

如果三个分量(R、G、B)的平均值小于某个值,则该像素将为白色。如果它更小,我会给它黑色值。

我尝试使用 np.where 和 np.mean,但没有产生结果。

    imagen = io.imread('example.jpg')
    imagen_copy = imagen.copy()
    imagen_copy[np.where((np.mean(imagen_copy, axis=1) <= 58.0))] = [255,255,255]
    imagen_copy[np.where((np.mean(imagen_copy, axis=1) > 58.0))] = [0, 0, 0]
    io.imshow(imagen_copy)
    plt.show()

谢谢。

【问题讨论】:

  • 你怎么知道它“不会产生结果”?你期待什么结果,你实际得到什么结果? minimal reproducible example 也可能会有所帮助。
  • 如果位置 x 的平均强度小于 58,我希望 x 为 [255, 255, 255]
  • 现在没有像素变为 255 或 0
  • 你想要axis=2axis=-1。前两个轴(0 和 1)是图像的行和列。此外,如果您首先将所有像素 >= 58 更改为 [255,255,255],那么在下一步中您将所有像素设置为 [0,0,0]

标签: python image numpy


【解决方案1】:

IIUC 您想沿最后一个轴取平均值,而不是在这两种情况下使用np.where,以下就足够了:

(images.mean(-1) <= 58.0) * 255

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-01
    • 2021-10-17
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2015-04-12
    • 2019-11-22
    相关资源
    最近更新 更多