17

私はこれらすべてに比較的慣れていないので、ここから画像分析のチュートリアルを開始しました。手順を実行しようとするとpylab.imshow(dna)、次のエラーが返されます。

In [10]: pylab.imshow(dna)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-10-fc86cadb4e46> in <module>()
----> 1 pylab.imshow(dna)

 /usr/lib/pymodules/python2.7/matplotlib/pyplot.pyc in imshow(X, cmap, norm, aspect,    interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, hold, **kwargs)
   2375         ax.hold(hold)
   2376     try:
-> 2377         ret = ax.imshow(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, **kwargs)
   2378         draw_if_interactive()
   2379     finally:

/usr/lib/pymodules/python2.7/matplotlib/axes.pyc in imshow(self, X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, **kwargs)
   6794                        filterrad=filterrad, resample=resample, **kwargs)
   6795 
-> 6796         im.set_data(X)
   6797         im.set_alpha(alpha)
   6798         self._set_artist_props(im)

/usr/lib/pymodules/python2.7/matplotlib/image.pyc in set_data(self, A)
    409         if (self._A.ndim not in (2, 3) or
    410             (self._A.ndim == 3 and self._A.shape[-1] not in (3, 4))):
--> 411             raise TypeError("Invalid dimensions for image data")
    412 
    413         self._imcache =None

TypeError: Invalid dimensions for image data

チュートリアルのすべての指示に従って手紙を書いたのは確かですが、うまくいかなかったのです。

4

3 に答える 3

43

これは、dna = mahotas.imread('dna.jpeg')のように画像が保存されるものです。type(dna)はnumpy.ndarrayを提供し、dna.shapeは(1024、1344、1)を提供します。

これが問題です。3Dを渡すと、ndarray3つまたは4つのプレーン(RGBまたはRGBA)が必要になります(スタックトレースの最後のフレームの410行目のコードを読んでください)。

あなたはただ使用して余分な次元を取り除く必要があります

dna = dna.squeeze()

また

imshow(dna.squeeze())

squeezeが行われているのかを確認するには、次の例を参照してください。

a = np.arange(25).reshape(5, 5, 1)
print a.shape # (5, 5, 1)
b = a.squeeze()
print b.shape # (5, 5)
于 2013-02-21T17:42:26.120 に答える
0

v3.3以降、サイズMxNx1の3d配列が表示のためにMxNに強制変換されるため、このエラーは発生しなくなりました。

于 2021-03-24T21:27:05.617 に答える
0
import matplotlib.pyplot as plt

plt.imshow(img.reshape(48, 48)) # for example: 48
于 2021-08-23T02:40:51.613 に答える