python中plt.imshow与cv2.imshow显示图像颜色错误的问题(避坑)

最近调试程序的时候,发现显示不正常,纳闷了很久,来回测试,终于发现问题,希望大家别再入坑了。

在用plt.imshow和cv2.imshow显示同一幅图时可能会出现颜色差别很大的现象。
这是因为:opencv的接口使用BGR,而matplotlib.pyplot 则是RGB模式。
各自显示各自图像是正常的,分别显示是不正常的。
说起来很绕,还是根据程序结合结果来看。

原图:
python中plt.imshow与cv2.imshow显示图像颜色错误的问题(避坑)_第1张图片

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread('0001.jpg')  # CV 读取图片
img2 = plt.imread('0001.jpg')  # plt 读取图片
img3 = cv.cvtColor(img, cv.COLOR_BGR2RGB)  # CV BGR转变RGB

plt.imshow(img)
plt.show()
plt.imshow(img2)
plt.show()
plt.imshow(img3)
plt.show()

cv.imshow('bgr image', img)
cv.imshow('rgb image', img2)
cv.imshow('plt image', img3)
cv.waitKey(0)  # 必须加,不然无法显示
cv.destroyAllWindows()


程序运行结果如下:
Matplotlib显示结果:

CV读取BGR,显示:
python中plt.imshow与cv2.imshow显示图像颜色错误的问题(避坑)_第2张图片

Matplotlib读取RGB,显示:
python中plt.imshow与cv2.imshow显示图像颜色错误的问题(避坑)_第3张图片

CV读取BGR转换为RGB,显示:
python中plt.imshow与cv2.imshow显示图像颜色错误的问题(避坑)_第4张图片

OpenCV显示结果:
CV读取BGR,显示:
python中plt.imshow与cv2.imshow显示图像颜色错误的问题(避坑)_第5张图片

Matplotlib读取RGB,显示:
python中plt.imshow与cv2.imshow显示图像颜色错误的问题(避坑)_第6张图片

CV读取BGR转换为RGB,显示:

python中plt.imshow与cv2.imshow显示图像颜色错误的问题(避坑)_第7张图片

你可能感兴趣的:(目标检测,python,python,图像处理,pycharm,计算机视觉)