Python cv2.imwrite和pyplot.imshow以不同方式显示灰度图像
我在一个Python cv2.imwrite和pyplot.imshow以不同方式显示灰度图像,python,opencv,matplotlib,plot,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) 我得到: 但是,如果我这样做了 plt.imshow(image) 我得到:
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)
我得到:
但是,如果我这样做了
plt.imshow(image)
我得到:
这是什么原因?我如何打印图像,使其看起来像是由
cv2.imwrite
生成的?这是因为matplotlib
在图像的灰度值范围内打印图像。例如,如果图像包含21到88之间的灰度值,则matplotlib将使用此范围(而不是0到255)打印图像
可通过以下方式解决此问题:
# from matplotlib import cm
plt.imshow(image, cmap=cm.gray, vmin=0, vmax=255)
要进行更深入的讨论,请查看github问题。什么类型的图像是
图像
?这是否回答了您的问题?颜色顺序BGR,RGB@abhilb这是一个灰度图像——即使是3通道,所有通道都是相同的,因此在这种情况下顺序是不相关的。可能您有一个默认的matplotlib colormap处于活动状态。plt.imshow(img,cmap='gray')
的结果是什么?