Python 我在im.show()中遇到错误

Python 我在im.show()中遇到错误,python,python-2.7,python-3.x,numpy,matplotlib,Python,Python 2.7,Python 3.x,Numpy,Matplotlib,我试图保存一个灰度图像(256256,1),并在输出中显示它 im = data.astype(np.uint8) print im.shape im = np.transpose(im, (2,1,0)) print im.shape im.show() 但是,我得到以下错误: (256, 256, 1) Traceback (most recent call last): File "lmdb_reader.py", line 37, in <module> pl

我试图保存一个灰度图像(256256,1),并在输出中显示它

im = data.astype(np.uint8)
print im.shape
im = np.transpose(im, (2,1,0)) 
print im.shape
im.show()
但是,我得到以下错误:

(256, 256, 1)
Traceback (most recent call last):
  File "lmdb_reader.py", line 37, in <module>
    plt.imshow(im)
  File "/home/se/anaconda2/envs/caffeenv/lib/python2.7/site-packages/matplotlib/pyplot.py", line 3029, in imshow
    **kwargs)
  File "/home/se/anaconda2/envs/caffeenv/lib/python2.7/site-packages/matplotlib/__init__.py", line 1819, in inner
    return func(ax, *args, **kwargs)
  File "/home/se/anaconda2/envs/caffeenv/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 4922, in imshow
    im.set_data(X)
  File "/home/se/anaconda2/envs/caffeenv/lib/python2.7/site-packages/matplotlib/image.py", line 453, in set_data
    raise TypeError("Invalid dimensions for image data")
TypeError: Invalid dimensions for image data
(256、256、1)
回溯(最近一次呼叫最后一次):
文件“lmdb_reader.py”,第37行,在
plt.imshow(im)
imshow中的文件“/home/se/anaconda2/envs/caffeenv/lib/python2.7/site packages/matplotlib/pyplot.py”,第3029行
**kwargs)
文件“/home/se/anaconda2/envs/caffeenv/lib/python2.7/site packages/matplotlib/__init__.py”,第1819行,内部
返回函数(ax,*args,**kwargs)
文件“/home/se/anaconda2/envs/caffeenv/lib/python2.7/site packages/matplotlib/axes/_axes.py”,第4922行,在imshow中
im.set_数据(X)
set_数据中的文件“/home/se/anaconda2/envs/caffeenv/lib/python2.7/site packages/matplotlib/image.py”,第453行
raise TypeError(“图像数据的维度无效”)
TypeError:图像数据的维度无效

在调用matplotlib.pyplot.show()之前,需要指定颜色映射。 默认情况下,传递三维阵列时,函数需要RGB图像

例如:

im = np.squeeze(im)
plt.imshow(im,cmap='gray')
plt.show()
请注意,
im.show()
不存在,但它可能只是问题中的一个输入错误。 真正的问题是:

Matplotlib的
pyplot.imshow
可以打印尺寸
(N,M)
(灰度)或
(N,M,3)
(rgb颜色)的图像。您的图像是
(N,M,1)
;因此,我们需要去除最后一个维度

import matplotlib.pyplot as plt
import numpy as np
#create data of shape (256,256,1)
data = np.random.rand(256,256,1)*255
im = data.astype(np.uint8)
print im.shape # prints (256L, 256L, 1L)
# (256,256,1) cannot be plotted, therefore 
# we need to get rid of the last dimension:
im = im[:,:,0]
print im.shape # (256L, 256L)
# now the image can be plotted
plt.imshow(im, cmap="gray")
plt.show()

这回答了你的问题吗?