最近在处理图片数据时,用的是 OpenCV 的 cv2.imread 方法,再用 matplotlib 的 imshow 方法显示出来时,发现红色和蓝色颠倒了,出现了色差问题。造成这个问题的原因是 OpenCV 和 matplotlib 的色彩空间不一致,一个是 RGB,一个是 BGR,所以蓝色和红色出现了色差问题,本文分享下解决方法。
一、现象描述
原图如下:
使用的 package:
import cv2 from matplotlib import pyplot as plt
图片读取与显示方式:
img_array = cv2.imread(DATA_DIR + '\\PMimages_1460\\' + img) plt.imshow(img_array) plt.show()
plt 显示的图片如下:
二、解决方法
产生这个问题的原因就是 OpenCV 的接口使用 BGR 模式,而 matplotlib.pyplot 则是 RGB 模式。
只要在显示图片前转换下就好了:
img_array = cv2.cvtColor(img_array, cv2.COLOR_BGR2RGB)