• 关于matplotlib与opencv读取和显示图片


    在这里插入图片描述
    最近在做一个图像处理的大作业,涉及到matplotlib与OpenCV的一些图片读取与显示的问题,感觉非常有意思,需要把它彻底掌握理解,遂写一篇博客记录一下自己的学习笔记,以备遗忘时能迅速找回知识点。希望对自己CV的学习有一些帮助。好,我们开始吧。

    import cv2  # 利用opencv读取图像
    import numpy as np
    import matplotlib.pyplot as plt # 利用matplotlib显示图像
    
    path = 'C:/Users/86187/Desktop/image/'
    img = cv2.imread(path + "lena.png") #读取图像
    # OpenCV显示图像
    cv2.imshow('lena', img)
    cv2.waitKey(0)
    

    在这里插入图片描述
    这是lena女神的原图,OpenCV读取并显示的结果。
    那我们用OpenCV读取,用matplotlib显示效果如何呢?

    # matplotlib显示图像
    plt.imshow(img)
    plt.axis('off')
    plt.show()
    

    在这里插入图片描述
    看,图片就像变了个颜色似的,看来这样显示是有问题的。这到底是怎么回事儿呢?原来啊,OpenCV读取图片(cv2.imread())后,图像的颜色通道顺序是[B, G, R],和matplotlib读取图片(plt.imread())后,图像的颜色通道顺继续[R, G, B]恰好是相反的。
    这是,我们要想让图片正常显示,需要进行通道交换。

    img = img[:,:,(2,1,0)] # 交换B和R通道
    # matplotlib显示图像
    plt.imshow(img)
    plt.axis('off')
    plt.show()
    

    在这里插入图片描述
    现在就正常了!
    接下来是matplotlib显示灰度图的问题。

    img = cv2.imread(path + 'lena.png', 0)
    cv2.imshow('lena', img)
    cv2.waitKey(0)
    

    在这里插入图片描述
    我们看到图像已经成功转换为了灰度图。
    接下来我们用matplotlib来显示看看。

    img = cv2.imread(path + 'lena.png', 0)
    plt.imshow(img)
    plt.axis('off')
    plt.show()
    

    在这里插入图片描述
    看,明明显示的是灰度图,它怎么突然有颜色了呢?你说无中生有也就罢了,怎么还变成了绿色??
    原来啊,matplotlib显示图像,默认以三通道显示图像,我们需要在plt.imshow()里添加参数。

    img = cv2.imread(path + 'lena.png', 0)
    plt.imshow(img, cmap='gray')
    plt.axis('off')
    plt.show()
    

    在这里插入图片描述
    看,这下就OK了吧!
    参考内容–>传送门

  • 相关阅读:
    【杭电ACM】1.2.4 Financial Management
    【杭电ACM】1.2.1 Biker's Trip Odometer
    【杭电ACM】1097 A hard puzzle
    【西交ACM】100 A+B problem
    【杭电ACM】1.2.2 Climbing Worm
    【杭电ACM】1004 Let the Balloon Rise
    【杭电ACM】1.2.3 hide handkerchief
    【杭电ACM】1.2.5 find your present (2)
    【杭电ACM】1.2.6 decimal system
    【西交ACM】298 第N大的数
  • 原文地址:https://www.cnblogs.com/Jack-Tim-TYJ/p/12831899.html
Copyright © 2020-2023  润新知