• 如何使用 python3 将RGB 图片转换为 灰度图


    首先,介绍第一种方法, 使用  PIL  库,   PIL库是一种python语言常用的一个图形处理库。

    关于   PIL  库的安装本文就不介绍了。

    from PIL import Image
    I = Image.open('C:\Users\Administrator\Desktop\照片\timg.jpg')
    I.show()
    L = I.convert('L')
    L.show()
    L.save('
    C:\Users\Administrator\Desktop\照片\timg2.jpg')

    timg.jpg  文件:

    灰度图:

    第二种, 便是使用 numpy库  来编写自己的转化函数:

    import matplotlib.image as mpimg
    import matplotlib.pyplot as plt
    def rgb2gray(rgb):
        r, g, b=rgb[:, :, 0], rgb[:, :, 1], rgb[:, :, 2]
        gray=0.2989*r + 0.5870*g + 0.1140*b
        return gray
    img=mpimg.imread('C:\Users\Administrator\Desktop\照片\timg.jpg')
    plt.imshow(img)
    plt.show()
    img2=rgb2gray(img)
    plt.imshow(img2)
    plt.show()

    结果展示:

    采用第二种方法展示的结果图十分的怪异,应该是matplotlib.plot 展示一个通道图片时候需要额外设置的缘故吧,下面找到了一个修正的代码,如下:

    import matplotlib.image as mpimg
    import matplotlib.pyplot as plt
    import numpy as np
    
    def rgb2gray(rgb):
        return np.dot(rgb[..., :3], [0.2989, 0.5870, 0.1140])
    
    img=mpimg.imread('C:\Users\Administrator\Desktop\照片\timg.jpg')
    
    plt.imshow(img)
    plt.show()
    
    img2=rgb2gray(img)
    
    plt.imshow(img2, cmap=plt.get_cmap('gray'))
    plt.show()

    结果图:

    发现这次的效果还是可以的。

  • 相关阅读:
    数学符号表
    对比深度学习十大框架:TensorFlow最流行但并不是最好
    支持向量机通俗导论(理解SVM的三层境界)
    Annotation
    Struts2的拦截器
    DLL文件的引用
    JS引擎
    Windows窗口的创建
    解决构造器多参数的设计问题
    静态工厂对比构造器之优缺点
  • 原文地址:https://www.cnblogs.com/devilmaycry812839668/p/10128001.html
Copyright © 2020-2023  润新知