OpenCV与Matplotlib显示同一张图片差异问题(附代码与.npy文件)
如何让OpenCV显示出与Matplotlib一致的灰度图效果
这是此前未获解答问题的续篇,以下是复现问题的代码、无效尝试,以及两种显示方式的差异:
环境依赖安装命令
conda install -c conda-forge opencv pip install numpy pip install matplotlib
加载图片的代码
import cv2 import numpy as np import matplotlib.pyplot as plt if __name__ == "__main__": image = np.load('image.npy') print(image.shape) # 输出: (256, 256, 1) print(image.dtype) # 输出: float64
尝试过但无效的代码
image[np.where(image.max() != 255)] = 0max_img = image.max(axis=0)int_image = image.astype(int)
显示效果对比
OpenCV显示代码及效果
cv2.imshow('image', image) cv2.waitKey()
显示效果:图像几乎全黑,无法看清有效内容。
Matplotlib显示代码及效果
plt.imshow(image, cmap="gray")
(注:cmap参数仅用于将图像显示为黑白,并非问题根源)
显示效果:正常呈现出清晰的灰度图像内容。
需求
需要实现Matplotlib的显示效果,请问如何仅通过代码(无需保存再重新加载图片)让OpenCV也呈现一致的显示效果?已查阅资料了解到两者显示机制的差异,但仍不知道具体实现方法。
内容的提问来源于stack exchange,提问作者Daniel Agam
相关产品推荐
相关产品推荐

