关于plt.imshow显示图像发蓝问题的解决办法

彩色图像出现色差

使用cv2.imread()读取图像时,默认彩色图像的三通道顺序为B、G、R,这与我们所熟知的RGB中的R通道和B通道正好互换位置了。

而使用plt.imshow()函数却默认显示图像的通道顺序为R、G、B,导致图像出现色差发蓝。

彩色图像出现色差代码:

复制代码
1 import cv2
2 import numpy as np
3 import matplotlib.pyplot as plt
4 
5 img = cv2.imread('Lena.jpg')
6 plt.xticks([]), plt.yticks([])         #隐藏x轴和y轴
7 
8 plt.imshow(img)
9 plt.show()
复制代码

运行结果如图1-1所示,其颜色偏蓝,怪吓人的:

                

 解决办法:重新组合

复制代码
 1 import cv2
 2 import numpy as np
 3 import matplotlib.pyplot as plt
 4 
 5 img = cv2.imread('Lena.jpg')
 6 
 7 b,g,r = cv2.split(img)            #分别提取B、G、R通道
 8 img2 = cv2.merge([r,g,b])    #重新组合为R、G、B
 9 
10 #或者直接 img2 =  cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
11 
12 plt.xticks([]), plt.yticks([]) # 隐藏x和y轴
13 
14 plt.imshow(img2)
15 plt.show()
复制代码

运行结果如图1-2所示,将BGR调整回RGB后其能正常显示:

                 

 

posted @   taohuaxiaochunfeng  阅读(169)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示