12

我试图在使用 scikit-image 创建的骨架化图像中使用 cv2 python 库查找轮廓,但出现此错误:

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

我的问题是:我必须做什么才能转换为 cv2,反之亦然?

我知道 opencv 使用 numpy.uint8 类型来表示二进制图像而不是 scikit-image numpy.float64

我还使用了 mahotas (numpy.bool) 和 pymorph 库。如何从 scikit-image 转换为这些库,反之亦然?

4

2 回答 2

19

scikit-image提供不同数据类型之间的转换例程,也正确保留缩放:

from skimage import img_as_ubyte

cv_image = img_as_ubyte(any_skimage_image)

更新:scikit-image 用户指南现在有一个更详细的部分:http ://scikit-image.org/docs/stable/user_guide/data_types.html#working-with-opencv

于 2013-04-23T11:22:17.503 回答
0

这对我有用:

image = skimage.io.imread(mpath)
img = image[:, :, ::-1] # convert image from RGB (skimage) to BGR (opencv)
cv2.namedWindow('original', cv2.WINDOW_NORMAL)
cv2.imshow('original',img)
于 2018-11-25T09:19:00.240 回答