How can i convert images from scikit-image to opencv2 and other libraries?

improc picture improc · Apr 22, 2013 · Viewed 13.2k times · Source

I tried to find contour with cv2 python library in a skeletonized image created with scikit-image and i got this error:

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

My question is: What i have to do to convert to cv2 and viceversa?

I know that opencv use numpy.uint8 type to represent binary images instead scikit-image numpy.float64

I used also mahotas (numpy.bool) and pymorph libraries. How can i convert from scikit-image to these libraries and viceversa?

Answer

Stefan van der Walt picture Stefan van der Walt · Apr 23, 2013

scikit-image provides conversion routines between the different data-types that also correctly preserves scaling:

from skimage import img_as_ubyte

cv_image = img_as_ubyte(any_skimage_image)

Update: the scikit-image user guide now has a more detailed section on this: http://scikit-image.org/docs/stable/user_guide/data_types.html#working-with-opencv