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

2

あなたが持っているものは近いです。imshow docs を見ると、画像またはデータ配列のいずれかを渡す必要があります。

これはうまくいくはずです:

from PIL import Image
from pylab import *
im = Image.open('sample.jpg')
imshow(im)


imshow() が期待しているものは次のとおりです。

「X は、float 配列、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 に答える