matplotlib显示opencv读取的图片颜色异常,BGR转RGB的两种方式:cv2.cvtColor与img[:,:,::-1]

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。

更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~

👍感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、【100个深度学习实战项目】【链接】,持续更新~~

二、机器学习实战专栏【链接】 ,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

目录

问题描述

matplotlib.pyplot的imshow()方法广泛用于显示图像,其在显示opencv加载的图像时会出现颜色异常,代码如下所示:

python 复制代码
# --coding:utf-8--
import cv2
from matplotlib import pyplot as plt
import matplotlib
matplotlib.use('TkAgg')

# opencv读取图片并显示
img = cv2.imread('1.jpg')
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# matplotlib显示图片
plt.imshow(img)
plt.show()

原始图片:

matplotlib显示图片

通过对比可以发现,下方的图片偏蓝,如左侧的红色小车变为了蓝色广告牌也变成了蓝色

原因分析

opencv默认加载的图像时使用的是BGR方式,而matplotlib使用的RGB方式进行显示的。因此matplotlib进行显示时会将B通道当做R通道,R通道当做B通道。从而图片颜色显示异常。

解决办法

将opencv默认加载的图像的BGR转变为RGB,然后再进行显示。

方法一:cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

直接使用cv2.cvtColor(img,cv2.COLOR_BGR2RGB)将BGR转为RGB,如下所示:

python 复制代码
# matplotlib显示图片
img_rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)
plt.show()

方法二:img[:,:,::-1]

直接通过numpy切片的方式,进行通道转换,使用img[:,:,::-1],代码如下所示:

python 复制代码
plt.imshow(img[:,:,::-1])
plt.show()

解释说明:

在Python编程语言中,特别是使用NumPy库处理多维数组(例如图像数据)时,img[:,:,::-1]这样的语法是用于索引和切片数组的。

具体来说,img是一个三维数组,其中:

  • 第一个维度(:)代表图像的高度(或行数);
  • 第二个维度(:)代表图像的宽度(或列数);
  • 第三个维度(::-1)代表图像的颜色通道(如RGB)。
    img[:,:,::-1]的操作分解如下:
  • img[:,:,...]:表示选取整个图像的所有行和列;
  • [::-1]:这是一个步长为-1的切片操作,意味着它会反转第三个维度上的数据顺序。
    由于第三个维度通常代表颜色通道,对于一个RGB图像来说:
  • 第一个通道是红色(R);
  • 第二个通道是绿色(G);
  • 第三个通道是蓝色(B)。
    [::-1]会将这三个通道的顺序从RGB改为BGR。因此,img[:,:,::-1]通常用于在处理图像时,将图像的颜色通道从RGB转换到BGR。

如果内容对你有帮助,感谢点赞关注,更多精彩内容持续更新~~

关注文末名片G-Z-H:【阿旭算法与机器学习】,发送【开源】可获取更多学习资源

相关推荐
沐雪架构师27 分钟前
AI大模型开发原理篇-2:语言模型雏形之词袋模型
人工智能·语言模型·自然语言处理
python算法(魔法师版)1 小时前
深度学习深度解析:从基础到前沿
人工智能·深度学习
kakaZhui2 小时前
【llm对话系统】大模型源码分析之 LLaMA 位置编码 RoPE
人工智能·深度学习·chatgpt·aigc·llama
struggle20253 小时前
一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI
人工智能·深度学习·目标检测·语言模型·自然语言处理·数据挖掘·集成学习
佛州小李哥3 小时前
通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
云空4 小时前
《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》
运维·人工智能·web安全·网络安全·开源·网络攻击模型·安全威胁分析
AIGC大时代4 小时前
对比DeepSeek、ChatGPT和Kimi的学术写作关键词提取能力
论文阅读·人工智能·chatgpt·数据分析·prompt
山晨啊85 小时前
2025年美赛B题-结合Logistic阻滞增长模型和SIR传染病模型研究旅游可持续性-成品论文
人工智能·机器学习
一水鉴天5 小时前
为AI聊天工具添加一个知识系统 之77 详细设计之18 正则表达式 之5
人工智能·正则表达式
davenian6 小时前
DeepSeek-R1 论文. Reinforcement Learning 通过强化学习激励大型语言模型的推理能力
人工智能·深度学习·语言模型·deepseek