【问题标题】:Convert 3 channel image to 1 channel python将3通道图像转换为1通道python
【发布时间】:2020-08-08 04:24:31
【问题描述】:

我在 python 中使用 Unet 进行分割,我的 Unet 的输出是具有这种形状 [512,512,1] 的掩码。

在预测出一个蒙版后,我想在预测的蒙版和测试图像的真实蒙版之间做 f1 分数。我需要将真正的掩码从 [512,512,3] 转换为 [512,512,1],然后我就可以转换为 [512,512]。

谁能帮助我? Image with my outputs

【问题讨论】:

    标签: python image-segmentation unity3d-unet


    【解决方案1】:

    您可以使用Pillow

    from PIL import Image
    img = Image.open('image.png').convert('LA')
    img.save('greyscale.png')
    

    使用 matplotlib 和 the formula

    Y' = 0.2989 R + 0.5870 G + 0.1140 B
    

    你可以这样做:

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.image as mpimg
    
    def rgb2gray(rgb):
        return np.dot(rgb[...,:3], [0.2989, 0.5870, 0.1140])
    
    img = mpimg.imread('image.png')
    gray = rgb2gray(img)
    plt.imshow(gray, cmap=plt.get_cmap('gray'), vmin=0, vmax=1)
    plt.show()
    

    您可以参考此answer 了解更多信息

    【讨论】:

    • 谢谢,但您的代码对我没有帮助。我改进了我的问题以更好地理解
    【解决方案2】:

    我发现了答案。我不得不移除一个轴

    预测的形状 [512,512,1]

    预测 = 预测[:, :,:, 0]

    预测的形状 [512,512]

    【讨论】:

      猜你喜欢
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      相关资源
      最近更新 更多