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

OpenCV读取灰度图存变量后Matplotlib绘图显绿色问题求助

解决Matplotlib显示OpenCV灰度图呈绿色调的问题

问题根源

你读取的图像确实是单通道灰度图,但Matplotlib的imshow默认使用viridis彩色配色方案渲染单通道数据,这才导致图像看起来发绿,和你读取灰度图的方式无关。

直接解决方案

在imshow函数中指定灰度配色参数cmap='gray',同时建议加上vmin=0, vmax=255锁定灰度值映射范围(匹配8位图像的0-255区间),修改后的代码如下:

img = cv2.imread(path, 0)
fig, axs = plt.subplots(figsize=(5,5))
# 核心修改:添加灰度配色与范围参数
axs.imshow(img, cmap='gray', vmin=0, vmax=255)
axs.set_axis_off()
plt.show()

为什么之前的尝试无效?

你用cv2.imread(path, cv2.IMREAD_GRAYSCALE)或cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)的方式,已经正确将图像转为单通道灰度图了——可以通过打印print(img.shape)验证,输出应为(图像高度, 图像宽度)(无第三个通道维度)。问题完全出在Matplotlib的显示环节,而非图像读取/转换步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:22:13