matplotlib 显示 OpenCV 图片存在色差的问题(红色与蓝色颠倒)

最近在处理图片数据时,用的是 OpenCV 的 cv2.imread 方法,再用 matplotlib 的 imshow 方法显示出来时,发现红色和蓝色颠倒了,出现了色差问题。造成这个问题的原因是 OpenCV 和 matplotlib 的色彩空间不一致,一个是 RGB,一个是 BGR,所以蓝色和红色出现了色差问题,本文分享下解决方法。

一、现象描述

原图如下:

matplotlib 显示 OpenCV 图片存在色差的问题

使用的 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 显示的图片如下:

matplotlib 显示 OpenCV 图片存在色差的问题

二、解决方法

产生这个问题的原因就是 OpenCV 的接口使用 BGR 模式,而 matplotlib.pyplot 则是 RGB 模式

只要在显示图片前转换下就好了:

img_array = cv2.cvtColor(img_array, cv2.COLOR_BGR2RGB)
赞(1)
关注我们
未经允许不得转载:老王博客 » matplotlib 显示 OpenCV 图片存在色差的问题(红色与蓝色颠倒)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址