为了账号安全,请及时绑定邮箱和手机立即绑定

OpenCV在加载时为彩色图像提供错误的颜色

OpenCV在加载时为彩色图像提供错误的颜色

HUX布斯 2019-08-19 16:11:19
OpenCV在加载时为彩色图像提供错误的颜色我在Python OpenCV中加载彩色图像并绘制相同的图像。然而,我得到的图像的颜色都混淆了。这是代码:import cv2import numpy as npfrom numpy import array, arange, uint8  from matplotlib import pyplot as plt img = cv2.imread('lena_caption.png', cv2.IMREAD_COLOR)bw_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)images = []images.append(img)images.append(bw_img)titles = ['Original Image','BW Image']for i in xrange(len(images)):     plt.subplot(1,2,i+1),plt.imshow(images[i],'gray')     plt.title(titles[i])     plt.xticks([]),plt.yticks([])plt.show()
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

OpenCV使用BGR作为图像的默认颜色顺序,matplotlib使用RGB。当您在matplotlib中显示加载了OpenCv的图像时,通道将返回到前面。

解决此问题的最简单方法是使用OpenCV将其显式转换回RGB,就像创建灰度图像时一样。

RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

然后在你的情节中使用它。


查看完整回答
反对 回复 2019-08-19
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

作为上一个答案的替代方案,您可以使用(稍快)

img = cv2.imread('lena_caption.png')[...,::-1]

%timeit [cv2.cvtColor(cv2.imread(f), cv2.COLOR_BGR2RGB) for f in files]
每循环231 ms±3.08 ms(平均值±标准偏差,7次运行,每次1次循环)

%timeit [cv2.imread(f)[...,::-1] for f in files] 
每循环220 ms±1.81 ms(平均值±标准偏差,7次运行,每次1次循环)


查看完整回答
反对 回复 2019-08-19
  • 2 回答
  • 0 关注
  • 860 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信