flyinsky518 发表于 2014-06-23 23:18

显示图像报Image data can not convert to float

有如下代码:
from PIL import Image
from pylab import *
im = array(Image.open('./empire.jpg'))
imshow(im)

执行这段代码,会报如下错误:
Traceback (most recent call last):
File "showIm.py", line 12, in <module>
    imshow(im)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/pyplot.py", line 2377, in imshow
    ret = ax.imshow(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, **kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/axes.py", line 6796, in imshow
    im.set_data(X)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/image.py", line 407, in set_data
    raise TypeError("Image data can not convert to float")
TypeError: Image data can not convert to float
ECSC-APdeMacBook-Pro:myPy ecsc$ cat showIm.py

请问高手,为什么会有这样的错误?谢谢!

xmchenb 发表于 2014-06-24 08:44

怀疑是:
         (Image.open('./empire.jpg') 返回的是image类型的数据
          而array()里面要求的是string类型的

flyinsky518 发表于 2014-06-24 10:16

回复 2# xmchenb
那如何修改呢?


   

icymirror 发表于 2014-06-24 10:22

回复 3# flyinsky518
直接:imshow(Image.open('empire.jpg'))

flyinsky518 发表于 2014-06-24 10:43

回复 4# icymirror

仍然报错,具体的错误信息如下:
Traceback (most recent call last):
File "showIm.py", line 5, in <module>
    imshow(im)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/pyplot.py", line 2377, in imshow
    ret = ax.imshow(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, **kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/axes.py", line 6796, in imshow
    im.set_data(X)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/image.py", line 402, in set_data
    self._A = pil_to_array(A)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/image.py", line 1260, in pil_to_array
    x = toarray(im)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/image.py", line 1245, in toarray
    x_str = im.tostring('raw',im.mode,0,-1)
File "/Library/Python/2.7/site-packages/PIL/Image.py", line 532, in tostring
    self.load()
File "/Library/Python/2.7/site-packages/PIL/ImageFile.py", line 189, in load
    d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
File "/Library/Python/2.7/site-packages/PIL/Image.py", line 385, in _getdecoder
    raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available

   

icymirror 发表于 2014-06-24 12:07

回复 5# flyinsky518
你能查看下你的matplotlib的版本嘛?
import matplotlib
matplotlib.__version__ (我这边的是1.3.1,工作没有问题。)

flyinsky518 发表于 2014-06-24 12:33

我这边是1.1.1,好像是版本的问题。我再试一下。谢谢。

flyinsky518 发表于 2014-06-24 13:34

我用的是OSX操作系统10.9,找不到与之相对应的包。(:'(

flyinsky518 发表于 2014-06-24 13:34

我用的是OSX操作系统10.9,找不到与之相对应的包。(:'(

icymirror 发表于 2014-06-24 14:24

回复 9# flyinsky518
那你可能需要自己从源代码开始编译安装了。
这里有说明: http://matplotlib.org/users/installing.html
(注:pylab实际上是 matplotlib.pylab)
页: [1] 2
查看完整版本: 显示图像报Image data can not convert to float