2013-04-22 3 views
6

나는 scikit 이미지로 만든 골격 화 이미지 CV2 파이썬 라이브러리 윤곽을 찾기 위해 노력하고이 오류가있어 :scikit-image에서 opencv2 및 다른 라이브러리로 이미지를 변환하려면 어떻게해야합니까?

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

내 질문입니다 : 내가 CV2 및 viceversa에로 변환 할 필요가 무엇입니까?

나는 OpenCV의 사용 numpy.uint8 유형이 바이너리 이미지를 표현하는 것을 알고 대신 scikit 이미지 numpy.float64 나는 또한 mahotas (numpy.bool)와 pymorph 라이브러리를 사용

. scikit-image에서이 라이브러리로 변환 할 수 있습니까?

from skimage import img_as_ubyte 

cv_image = img_as_ubyte(any_skimage_image) 

업데이트 :

+0

내가 생각하는 다음 scikit 이미지 사용자 가이드는 지금이에 대한 더 자세한 섹션이 나는 해결책을 찾았다! 내가 사용하는 경우 : skel = np.array (skel, dtype = np.uint8) opencv2 형식으로 쉽게 변환하고 다른 라이브러리에서도 사용할 수 있습니다! – improc

+0

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

답변

11

scikit-image도 제대로 스케일링을 보존 서로 다른 데이터 유형 사이의 변환 루틴을 제공 http://scikit-image.org/docs/stable/user_guide/data_types.html#working-with-opencv

+1

그 반대의 경우 : cv_image에서 skimage로 변경 하시겠습니까? –

+2

cv_image가 부호없는 바이트의 배열 인 경우 skimage는 기본적으로이를 이해합니다. 부동 소수점 이미지 작업을 선호한다면'img_as_float'가 그 트릭을해야합니다. 자세한 내용은 skimage 사용자 가이드를 참조하십시오. –

+0

또한이 변환이 필요한 사용자는 OpenCV가 BGR 색 공간을 기본적으로 사용한다는 점을 명심하십시오. Skimage가 RGB 하나를 사용합니다 :-) –