使用cv2.imread读取图像后plt展示出现颜色偏移异常问题
问题根因
cv2.imread读取彩色图像时默认返回BGR通道顺序的数组,而plt.imshow渲染图像时默认采用RGB通道顺序,二者通道顺序不匹配是颜色异常的核心原因,和是否做/255归一化操作无关。
修复方案
任选以下任意一种方式调整通道顺序即可:
- 调用OpenCV自带的颜色空间转换接口
import cv2 import matplotlib.pyplot as plt auxImg = cv2.imread("train/img_0001.jpg", cv2.IMREAD_COLOR) # BGR转RGB auxImg_rgb = cv2.cvtColor(auxImg, cv2.COLOR_BGR2RGB) # 归一化后展示也不会有问题 plt.imshow(auxImg_rgb / 255) plt.show()
- 直接通过数组切片翻转最后一个通道,实现同样效果
auxImg = cv2.imread("train/img_0001.jpg", cv2.IMREAD_COLOR) plt.imshow(auxImg[..., ::-1] / 255) plt.show()
内容的提问来源于stack exchange,提问作者Bia
相关产品推荐
相关产品推荐

