2013-02-21 63 views
8

Tôi tương đối mới đối với tất cả điều này và tôi bắt đầu làm hướng dẫn về phân tích hình ảnh tại đây: http://www.pythonvision.org/basic-tutorial Tôi đã cài đặt tất cả các mô-đun nhưng tôi không nhận được rất nhiều trước khi nhấn một tiếng rên. khi cố gắng thực hiện các bước pylab.imshow(dna) nó sẽ trả về lỗi sau:Hiển thị hình ảnh với 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 

Khá chắc chắn tôi đã theo tất cả các hướng dẫn trong hướng dẫn để lá thư nhưng tôi không thể làm việc ra được đang xảy ra sai

Cảm ơn

+1

là gì 'dna'? ('loại (dna)' và 'dna.shape' đưa ra cái gì?) Nó đang nâng' TypeError' vì nó không phải là một kiểu hay hình dạng mà 'imshow' biết cách xử lý. – tacaswell

+0

nó chỉ là những gì hình ảnh được lưu như trong 'dna = mahotas.imread ('dna.jpeg')' 'loại (dna)' cho numpy.ndarray và 'dna.shape' cho (1024, 1344, 1) –

Trả lời

23

"nó chỉ là những gì các hình ảnh được lưu như trong dna = mahotas.imread ('dna.jpeg') gõ (dna) mang đến cho numpy.ndarray và dna.shape cho (1024, 1344, 1)"

Đây là vấn đề, nếu y Trong tay một hình minh họa 3D ndarray, bạn sẽ có 3 hoặc 4 mặt phẳng (RGB hoặc RGBA). (Đọc mã trên dòng 410 trong khung cuối cùng của dấu vết ngăn xếp).

Bạn chỉ cần để thoát khỏi chiều kích thêm bằng

dna = dna.squeeze() 

hoặc

imshow(dna.squeeze()) 

Để xem những gì squeeze đang làm, xem ví dụ sau:

a = np.arange(25).reshape(5, 5, 1) 
print a.shape # (5, 5, 1) 
b = a.squeeze() 
print b.shape # (5, 5) 
Các vấn đề liên quan