Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python cv2.imwrite和pyplot.imshow以不同方式显示灰度图像_Python_Opencv_Matplotlib_Plot - Fatal编程技术网

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')
的结果是什么?