【问题标题】:Converting an ndarray image into a grayscale image with the same array shape将ndarray图像转换为具有相同数组形状的灰度图像
【发布时间】:2019-04-21 05:37:18
【问题描述】:

我正在尝试编写一个 python 函数,该函数将图像 ndarray 作为参数并使用广播返回该图像的灰度版本的 ndarray。

我现在的主要问题是生成的图像与原始图像的形状(800、400、3)不同。

编辑:原来我只是忘记将结果数组转换为 np.uint8

【问题讨论】:

  • 你能不能再具体一点:第一个代码的结果在什么情况下不起作用?
  • 为什么形状(800、400、3)很重要?最后一个维度 3 用于使用灰度时不需要的颜色层。当然,可以通过重复像素值 3 次来添加此维度

标签: python numpy numpy-ndarray array-broadcasting


【解决方案1】:

您的第一个convert_bw 函数没有任何问题,我认为问题在于您如何查看结果图像(您使用的库无法很好地向您显示结果)。例如,您可以通过以下代码查看结果:

import matplotlib.pyplot as plt
bw = convert_bw(img)
plt.imshow(bw.astype(np.uint8)) 

它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 2021-10-29
    • 2018-11-28
    • 2010-11-20
    相关资源
    最近更新 更多