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

cv2.imshow与matplotlib.pyplot.show显示灰度图效果不同如何解决?

灰度显示效果不一致的原因

两者的灰度值映射逻辑存在差异:

  • cv2.imshow() 对8位灰度图采用固定映射逻辑:像素值0固定对应纯黑,255固定对应纯白,和图像本身的像素分布无关。
  • plt.imshow() 默认采用动态适配的映射逻辑:会自动取输入图像的像素最小值作为vmin(映射为纯黑)、像素最大值作为vmax(映射为纯白),如果图像像素没有覆盖0~255的完整区间,就会出现显示偏差。

解决方法

调用plt.imshow()时显式指定vmin=0、vmax=255即可强制和OpenCV的映射逻辑对齐,修改后的代码如下:

import cv2 
import numpy as np 
import math
import sys
import matplotlib.pyplot as plt
import utils as ut

imgGray = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)
# 显式指定vmin和vmax参数对齐OpenCV显示规则
plt.imshow(imgGray, cmap = 'gray', vmin=0, vmax=255)
plt.show() 


cv2.imshow("",imgGray)
cv2.waitKey(0)
cv2.destroyAllWindows()


sys.exit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:00:01