ti-enxame.com

Mostrando uma imagem com pylab.imshow ()

Sou relativamente novo em tudo isso e comecei a fazer o tutorial de análise de imagens aqui: http://www.pythonvision.org/basic-tutorial Instalei todos os módulos, mas não instalei Não vá muito longe antes de encontrar um obstáculo. ao tentar executar a etapa pylab.imshow(dna), ele retorna o seguinte erro:

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

Quase certo que segui todas as instruções do tutorial ao pé da letra, mas não consigo descobrir, está dando errado

Obrigado

14
Samuel Barnett

"é apenas o que a imagem é salva como em dna = mahotas.imread ('dna.jpeg') type (dna) dá numpy.ndarray e dna.shape dá (1024, 1344, 1)"

Este é o problema, se você entregar um 3D ndarray, espera-se que você tenha 3 ou 4 planos (RGB ou RGBA). (Leia o código na linha 410 no último quadro do rastreamento de pilha).

Você só precisa se livrar da dimensão extra usando

dna = dna.squeeze()

ou

imshow(dna.squeeze())

Para ver o que squeeze está fazendo, veja o seguinte exemplo:

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