cv2.imwrite和pyplot.imshow以不同的方式显示灰度图像

时间:2019-12-04 11:26:29

标签: python opencv matplotlib plot

我在hdf5文件中有一堆医学图像。

 path_to_data = "data/train_large_axial_350_x_350.hdf5"
 data = h5py.File(path_to_data,"r")
 image_list = data["images"]
 image = image_list[5]

如果我这样做

 cv2.imwrite("maps/image.jpg", image)

我得到:

enter image description here

但是,如果我这样做

plt.imshow(image)

我得到:

enter image description here

这是什么原因?如何绘制图像,使其看起来像cv2.imwrite产生的图像?

1 个答案:

答案 0 :(得分:0)

这是因为matplotlib在图像的灰度值范围内绘制图像。例如,如果您的图像包含介于21到88之间的灰度值,则matplotlib会将其绘制在此范围内,而不是在0到255之间。

可以通过以下方法解决此问题:

# from matplotlib import cm    
plt.imshow(image, cmap=cm.gray, vmin=0, vmax=255)

要进行更深入的讨论,请查看this github问题。