关于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后其能正常显示:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律