I'm relatively new to all this and I started to do the tutorial on image analysis here: http://www.pythonvision.org/basic-tutorial
I have installed all the modules but I didn't get very far before hitting a snag.
when trying to perform the pylab.imshow(dna)
step it returns the following error:
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
Fairly certain I have followed all the instructions in the tutorial to the letter but I can't work out was is going wrong
Thanks
"it's just what the image is saved as in dna = mahotas.imread('dna.jpeg') type(dna) gives numpy.ndarray and dna.shape gives (1024, 1344, 1) "
This is the problem, if you hand in a 3D
ndarray
, it expects that you will have 3 or 4 planes (RGB or RGBA). (Read the code on line 410 in the last frame of the stack trace).You just need to get rid of the extra dimension using
or
To see what
squeeze
is doing, see the following example: