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

为何出现颜色反转?OpenCV高斯模糊代码运行颜色异常咨询

为什么OpenCV结合Matplotlib显示图像会出现颜色反转?

这个问题我之前也碰到过,核心原因是OpenCV和Matplotlib对图像通道的默认顺序处理不一样:

  • OpenCV读取图像时,默认会把图像解码成BGR(蓝、绿、红)的通道顺序
  • 而Matplotlib的imshow()函数默认是按照RGB(红、绿、蓝)的通道顺序来渲染显示的

你直接把OpenCV处理后的BGR格式图像传给Matplotlib显示,自然会出现颜色反转——原本的红色区域会变成蓝色,蓝色区域变成红色,也就是你看到的现象。

修复方法有两种,任选其一即可:

方法一:用OpenCV自带的颜色空间转换函数转换通道顺序

import cv2
from matplotlib import pyplot as pl
image = cv2.imread("Desert.jpg")
blur = cv2.GaussianBlur(image,(95,95),5)
# 将BGR格式转换为RGB格式
blur_rgb = cv2.cvtColor(blur, cv2.COLOR_BGR2RGB)
cv2.imshow("desert", image)
pl.imshow(blur_rgb)
pl.xticks([]), pl.yticks([])
pl.show()

方法二:直接通过数组切片反转通道顺序(更简洁)

import cv2
from matplotlib import pyplot as pl
image = cv2.imread("Desert.jpg")
blur = cv2.GaussianBlur(image,(95,95),5)
# 反转图像最后一维的通道顺序,实现BGR→RGB的转换
blur_rgb = blur[:, :, ::-1]
cv2.imshow("desert", image)
pl.imshow(blur_rgb)
pl.xticks([]), pl.yticks([])
pl.show()

另外补充一句:你代码里用cv2.imshow显示原图是正常的,因为cv2.imshow本身就是按照BGR顺序渲染图像的,和OpenCV的读取逻辑完全匹配,所以不会出现颜色问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:25:22