【问题标题】:Replace each pixel in a numpy array with a formula用公式替换 numpy 数组中的每个像素
【发布时间】:2018-12-30 23:47:02
【问题描述】:

我有一个 numpy 数组,它代表图像像素, 数组的形状是(500, 800, 3) 我需要将每个像素与公式相乘:

pixel_color = r * 0.299 + g * 0.587 + b * 0.114

所以,[r, g, b] -> [pixel_color, pixel_color, pixel_color]

如何使用 numpy 操作来做到这一点?

【问题讨论】:

  • 最后一个(内部)维度是否包含 rgb 值?如果是这样,你想得到一个二维数组吗?
  • @9769953 是rgb的灰度阴影
  • 我想你在找vectorize
  • rgb 没有灰度阴影;这并不意味着什么。您是指三种颜色的(相对)值,还是三维灰度图片?
  • @9769953 相对值

标签: python image numpy matrix


【解决方案1】:

您正在寻找像素的加权平均值。

a = np.ones(shape=(500,800,3))
gray_image = np.average(a, axis=2, weights=[.299, .587, .114])

然后,要恢复到原始形状,您可以使用带有新轴的 np.repeat。

np.repeat(gray_image[:,:,np.newaxis], repeats=3, axis=2)

【讨论】:

  • 感谢np.repeat 示例,这里非常相关!
猜你喜欢
  • 2019-03-28
  • 2020-05-22
  • 2019-03-30
  • 2021-05-22
  • 1970-01-01
  • 2019-01-25
  • 2018-03-30
  • 1970-01-01
  • 2015-10-02
相关资源
最近更新 更多