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

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

在用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')  # 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,显示:
在这里插入图片描述

Matplotlib读取RGB,显示:
在这里插入图片描述

CV读取BGR转换为RGB,显示:
在这里插入图片描述

OpenCV显示结果:
CV读取BGR,显示:
在这里插入图片描述

Matplotlib读取RGB,显示:
在这里插入图片描述

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

在这里插入图片描述

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值