2013-04-22 12 views
6

Ben scikit-görüntü ile oluşturulan iskeletize görüntüde cv2 piton kütüphanesi ile kontur bulmaya çalıştılar ve ben bu hata var:Görüntüleri scikit-image'den opencv2 ve diğer kütüphanelere nasıl dönüştürebilirim?

contours, hierarchy = cv2.findContours(skel,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 
TypeError: <unknown> data type = 0 is not supported 

Sorum şu: i cv2 ve tersine dönüştürmek için yapmanız gereken şey?

Ben opencv kullanımı numpy.uint8 tipi ikili görüntülerini temsil etmek olduğunu biliyoruz yerine scikit görüntü numpy.float64 Ben de mahotas (numpy.bool) ve pymorph kütüphaneleri kullanılan

. Scikit-image'den bu kütüphanelere ve viceversa'ya nasıl dönüşebilirim?

from skimage import img_as_ubyte 

cv_image = img_as_ubyte(any_skimage_image) 

Güncelleme:

+0

Bence: scikit-resmi, kullanıcı kılavuzu şimdi bu konuda daha ayrıntılı bir bölüm vardır kendimi çözüm buldum! Kullandığım takdirde: skel = np.array (skel, dtype = np.uint8) kolayca opencv2 türünü ve diğer kütüphaneler için dönüştürürüm! – improc

+0

http://scikit-image.org/docs/dev/user_guide/data_types.html#using-an-image-from-skimage-with-opencv – tidy

cevap

11

scikit-image da doğru ölçekleme korur farklı veri-türleri arasında dönüşüm rutinleri sağlar http://scikit-image.org/docs/stable/user_guide/data_types.html#working-with-opencv

+1

Varyantın tersi ne olabilir: cv_image'den skimage'ye? –

+2

Eğer cv_image bir işaretsiz bayt dizisi ise, skimage varsayılan olarak anlayacaktır. Kayan noktalı görüntülerle çalışmayı tercih ederseniz, 'img_as_float' hile yapmalıdır. Daha fazla bilgi için skimage kullanıcı kılavuzuna bakın. –

+0

Ayrıca, bu dönüşümlere kim ihtiyaç duyacak olursa, OpenCV'nin varsayılan olarak BGR renk alanını kullandığını aklınızda bulundurun. Skimage, RGB bir :-) kullanın –

İlgili konular