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

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

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

原图:

python中plt.imshow与cv2.imshow显示图像颜色错误的问题(避坑)
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread('0001.jpg')
img2 = plt.imread('0001.jpg')
img3 = cv.cvtColor(img, cv.COLOR_BGR2RGB)

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显示图像颜色错误的问题(避坑)

Matplotlib读取RGB,显示:

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

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

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

OpenCV显示结果:
CV读取BGR,显示:

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

Matplotlib读取RGB,显示:

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

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

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

Original: https://blog.csdn.net/weixin_42495721/article/details/121387410
Author: 张小波
Title: python中plt.imshow与cv2.imshow显示图像颜色错误的问题(避坑)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/641618/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球