尝试运行简单的PIL Python示例,无法将JPEG转换为浮点数
我写了一个简单的Python脚本
from PIL import Image
from pylab import *
im = array(Image.open('sample.jpg'))
imshow(im)
然后在IDLE里出现了这个错误
Traceback (most recent call last):
File "/home/michael/Dropbox/OpenCV/greyscale.py", line 5, in <module>
imshow(im)
File "/usr/local/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 2722, in imshow
imlim=imlim, resample=resample, url=url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/matplotlib/axes.py", line 7091, in imshow
im.set_data(X)
File "/usr/local/lib/python2.7/dist-packages/matplotlib/image.py", line 418, in set_data
raise TypeError("Image data can not convert to float")
TypeError: Image data can not convert to float
大概意思是说我不能把我的图片转换成浮点数,有谁知道我缺少了什么吗?
3 个回答
0
试试这个
>>> import matplotlib.pyplot as plt
>>> plt.imshow(im.reshape(im.shape[0], im.shape[1]), cmap=plt.cm.Greys)
2
你现在的做法差不多了。根据imshow的文档,你需要传入一个图像或者一个数据数组。
这样做应该可以:
from PIL import Image
from pylab import *
im = Image.open('sample.jpg')
imshow(im)
这是imshow()所期待的内容:
"X可以是一个浮点数组、一个uint8数组或者一个PIL图像。"
这里还有一些更多的细节:
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.imshow
17
我知道这个回答来得有点晚,但我觉得还是应该回答一下,以防其他人也遇到同样的问题。我之前也遇到过这个问题,原因是我加载的图片在项目文件夹里并不存在。所以在使用之前,你需要确认一下 sample.jpg
这个文件确实存在,并且能够正常加载。
if os.path.isfile('sample.jpg'): im = array(Image.open('sample.jpg'))
if im == None or im.size == 0:
print 'Image loaded is empty'
sys.exit(1)