最近调试程序的时候,发现显示不正常,纳闷了很久,来回测试,终于发现问题,希望大家别再入坑了。
在用plt.imshow和cv2.imshow显示同一幅图时可能会出现颜色差别很大的现象。
这是因为:opencv的接口使用BGR,而matplotlib.pyplot 则是RGB模式。
各自显示各自图像是正常的,分别显示是不正常的。
说起来很绕,还是根据程序结合结果来看。
原图:
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,显示:
Matplotlib读取RGB,显示:
CV读取BGR转换为RGB,显示:
OpenCV显示结果:
CV读取BGR,显示:
Matplotlib读取RGB,显示:
CV读取BGR转换为RGB,显示:
Original: https://blog.csdn.net/weixin_42495721/article/details/121387410
Author: 张小波
Title: python中plt.imshow与cv2.imshow显示图像颜色错误的问题(避坑)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/641618/
转载文章受原作者版权保护。转载请注明原作者出处!