2013-02-21 16 views
8

Sono relativamente nuovo a tutto questo e ho iniziato a fare il tutorial sull'analisi delle immagini qui: http://www.pythonvision.org/basic-tutorial Ho installato tutti i moduli ma non sono arrivato molto lontano prima di colpire un intoppo. quando si cerca di eseguire la fase pylab.imshow(dna) restituisce il seguente errore:Mostrando un'immagine con pylab.imshow()

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 

abbastanza certo ho seguito tutte le istruzioni del tutorial per la lettera, ma non riesco a capire è stato sta andando male

grazie

+1

ciò che è 'dna'? (cosa significa 'type (dna)' e 'dna.shape' dare?) Sta sollevando' TypeError' perché non è un tipo o una forma che 'imshow' sa come gestire. – tacaswell

+0

è proprio ciò che l'immagine viene salvata come in 'dna = mahotas.imread ('dna.jpeg')' 'tipo (dna)' dà numpy.ndarray e 'dna.shape' dà (1024, 1344, 1) –

risposta

23

"e 'proprio quello che l'immagine viene salvata come nel dna = mahotas.imread ('dna.jpeg') type (DNA) dà numpy.ndarray e dna.shape dà (1024, 1344, 1)"

Questo è il problema, se si mano in un 3D ndarray, si prevede che avrete 3 o 4 piani (RGB o RGBA). (Leggi il codice sulla riga 410 nell'ultimo frame della traccia dello stack).

Hai solo bisogno di liberarsi della dimensione usando

dna = dna.squeeze() 

o

imshow(dna.squeeze()) 

Per vedere cosa squeeze sta facendo, vedere l'esempio seguente:

a = np.arange(25).reshape(5, 5, 1) 
print a.shape # (5, 5, 1) 
b = a.squeeze() 
print b.shape # (5, 5) 
Problemi correlati