试图运行简单的PIL python示例,无法将jpeg转换为float

sho*_*osh 6 python image image-processing python-imaging-library

所以我写了一个简单的python脚本

from PIL import Image
from pylab import *
im = array(Image.open('sample.jpg'))
imshow(im)
Run Code Online (Sandbox Code Playgroud)

我从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
Run Code Online (Sandbox Code Playgroud)

基本上说我不能隐藏我的形象漂浮,任何人都知道我失踪了什么

小智 16

我知道这会很晚才到,但我想我应该回答以防其他人遇到同样的问题.我遇到了同样的问题,问题是我加载的图像在项目文件夹中不存在.所以你需要检查它是否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)
Run Code Online (Sandbox Code Playgroud)


小智 2

你所拥有的很接近。查看 imshow 文档,您需要传递图像或数据数组。

这应该有效:

from PIL import Image
from pylab import *
im = Image.open('sample.jpg')
imshow(im)
Run Code Online (Sandbox Code Playgroud)


这是 imshow() 所期望的:

“X 可以是浮点数组、uint8 数组或 PIL 图像。”

这里有更多详细信息:
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.imshow