我在 Windows 上的 python 2.7.3 上使用 opencv 2.4.3 遇到了一个有趣的错误。尝试使用 drawContours 时,我会收到“TypeError:不支持轮廓数据类型 = 5”错误,除非我先腌制/取消腌制轮廓。
这不起作用(我得到“TypeError:contours data type = 5 is not supported”):
noBg = cv2.blur(src, (5,5))
noBg = cv2.inRange(noBg, np.array([80, 0, 200], np.uint8), np.array([255, 50, 255], np.uint8))
noBg = np.invert(noBg)
contours, hierarchy = cv2.findContours(noBg, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(src, contours, -1, (0,255,0), 3)
但这确实有效:
noBg = cv2.blur(src, (5,5))
noBg = cv2.inRange(noBg, np.array([80, 0, 200], np.uint8), np.array([255, 50, 255], np.uint8))
noBg = np.invert(noBg)
contours, hierarchy = cv2.findContours(noBg, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
tmp = cPickle.dumps(contours)
contours = cPickle.loads(tmp)
cv2.drawContours(src, contours, -1, (0,255,0), 3)
有没有其他人看到过这种行为,或者我错过了什么明显的东西?我是 python/opencv 的新手,所以很可能就是这种情况。
编辑:刚刚在我的 Mac 上进行了测试,两种情况都可以正常工作。也许只是一个Windows问题?