6

所以我写了一个简单的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

基本上说我不能将我的图像转换为浮动,任何人都知道我错过了什么

4

3 回答 3

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)
于 2013-05-16T11:22:51.573 回答
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

于 2013-02-17T14:17:39.053 回答
0

尝试这个

>>> import matplotlib.pyplot as plt
>>> plt.imshow(im.reshape(im.shape[0], im.shape[1]), cmap=plt.cm.Greys)
于 2016-12-27T15:21:27.870 回答