You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib imshow显示RGB图像色彩失真问题求助

问题解答

这跟colormap完全没关系,问题出在图像的通道顺序上!

你用cv2.imread()读取图像时,OpenCV默认会把图像以BGR的通道顺序加载到内存里;但matplotlib.pyplot.imshow()显示图像时,默认是按照RGB的通道顺序来解析的。通道顺序搞反了,自然就会出现偏蓝的色调——因为原本的红色通道被当成了蓝色通道来显示,蓝色通道则被当成了红色通道。

要解决这个问题,有两种简单的方法:

方法1:用OpenCV的通道转换函数

直接调用cv2.cvtColor()把BGR格式转换成RGB格式:

import cv2
import matplotlib.pyplot as plt

lena = cv2.imread("lena.jpg")
# 转换通道顺序:BGR -> RGB
lena_rgb = cv2.cvtColor(lena, cv2.COLOR_BGR2RGB)
plt.imshow(lena_rgb)
plt.show()

方法2:直接通过数组切片反转通道

因为图像在numpy数组里是按[高度, 宽度, 通道]存储的,所以可以直接对通道维度进行反转:

import cv2
import matplotlib.pyplot as plt

lena = cv2.imread("lena.jpg")
# 反转最后一个维度(通道维度),实现BGR -> RGB
plt.imshow(lena[:, :, ::-1])
plt.show()

两种方法都能让matplotlib正确显示RGB图像,选你觉得顺手的就行~

内容的提问来源于stack exchange,提问作者dberga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:47:16