关于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 @ 2024-02-02 09:19  taohuaxiaochunfeng  阅读(118)  评论(0编辑  收藏  举报