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:【阿旭算法与机器学习】,发送【开源】可获取更多学习资源

相关推荐
ADAI_Bowen3 小时前
2026 年 8 月建筑设计 AI 工具分析:基于几何保真、可控与编辑能力
人工智能·机器学习·计算机视觉
风合星语3 小时前
2026 机器人行业观察(一):现在入局机器人还来得及吗?——机会、门槛与技术人的切入点
网络·人工智能·机器人
jimmyleeee3 小时前
大模型安全之十一:拆解现代 AI 系统的“骨架”:一份安全架构的完整蓝图
人工智能·安全·安全架构
一切皆是因缘际会3 小时前
事件驱动计算
人工智能
程序员无隅3 小时前
Codex 实战:用 AI 写运维脚本
运维·人工智能
lauo3 小时前
FDE的终极形态:从“一个人”到“一个网络”
人工智能·分布式
zandy10113 小时前
2026 隐私保护 AI 搜索工具选型指南:从个人防护到 Agent 级基础设施的完整梳理
大数据·人工智能
Token掘金室3 小时前
Function Calling完整调用教程
大数据·数据库·人工智能
2601_962293534 小时前
第3.7章 机器人第三方库实战总结(七):OpenCV视觉SLAM核心库详解:API速查+源码实例+避坑指南
图像处理·opencv·计算机视觉·slam·第三方库
Dawson Zhu4 小时前
GraphRAG 原理、适用场景与工程落地:从关系建模视角做一次客观拆解
人工智能·语言模型·架构·aigc·agi