当前位置 博文首页 > python读取并显示图片的三种方法(opencv、matplotlib、PIL库)

    python读取并显示图片的三种方法(opencv、matplotlib、PIL库)

    作者:loadding... 时间:2021-07-09 18:40

    前言

    在进行图像处理时,经常会用到读取图片并显示出来这样的操作,所以本文总结了python中读取并显示图片的3种方式,分别基于opencv、matplotlib、PIL库实现,并给出了示例代码,介绍如下。

    OpenCV

    OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

    import matplotlib.pyplot as plt # plt 用于显示图片
    import cv2
    
    #opencv的颜色通道顺序为[B,G,R],而matplotlib颜色通道顺序为[R,G,B],所以需要调换一下通道位置
    img1 = cv2.imread('./Lena.png')[:,:,(2,1,0)] # 读取和代码处于同一目录下的 lena.png
    img2 = cv2.imread('./Lena.png')[:,:,(2,1,0)]
    
    #结果展示
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文乱码
    plt.subplot(121)
    #imshow()对图像进行处理,画出图像,show()进行图像显示
    plt.imshow(img1)
    
    plt.title('图像1')
    #不显示坐标轴
    plt.axis('off')
    
    #子图2
    plt.subplot(122)
    plt.imshow(img2)
    plt.title('图像2')
    plt.axis('off')
    
    # #设置子图默认的间距
    plt.tight_layout()
    #显示图像
    plt.show()
    

    Matplotlib

    Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。

    import matplotlib.pyplot as plt # plt 用于显示图片
    import matplotlib.image as mpimg # mpimg 用于读取图片
    
    img1 = mpimg.imread('./Lena.png') # 读取和代码处于同一目录下的 lena.png
    img2=mpimg.imread('./Lena.png')
    
    #结果展示
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文乱码
    plt.subplot(121)
    #imshow()对图像进行处理,画出图像,show()进行图像显示
    plt.imshow(img1)
    
    plt.title('图像1')
    #不显示坐标轴
    plt.axis('off')
    
    #子图2
    plt.subplot(122)
    plt.imshow(img2)
    plt.title('图像2')
    plt.axis('off')
    
    # #设置子图默认的间距
    plt.tight_layout()
    #显示图像
    plt.show()
    

    PIL

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。。。

    PIL可以做很多和图像处理相关的事情:

    • 图像归档(Image Archives)。
    • 图像展示(Image Display)。
    • 图像处理(Image Processing)。
    import matplotlib.pyplot as plt # plt 用于显示图片
    from PIL import Image
    
    img1 = Image.open('./Lena.png')
    img2 = Image.open('./Lena.png')
    
    #结果展示
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文乱码
    plt.subplot(121)
    plt.imshow(img1)
    plt.title('图像1')
    #不显示坐标轴
    plt.axis('off')
    
    #子图2
    plt.subplot(122)
    plt.imshow(img2)
    plt.title('图像2')
    plt.axis('off')
    
    # #设置子图默认的间距
    plt.tight_layout()
    #显示图像
    plt.show()
    

    运行结果

    总结

    jsjbwy