在Windows上的python2.7.3上,opencv2.4.3遇到了一个有趣的错误。当我尝试使用drawcurtours时,我得到一个“TypeError:contours data type=5 is not supported”错误,除非我先pickle/unpickle轮廓。
这不起作用(我得到“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)
但这确实有效:
^{pr2}$其他人有没有看到这种行为,或者我遗漏了一些明显的东西?我是python/opencv新手,所以很可能是这样。
编辑:刚刚在我的Mac上测试过,两种情况都很好。可能只是Windows的问题?
如果降级到opencv 2.4.2,这将起作用。这似乎是两周前刚刚发布的2.4.3的一个bug。在
我在绘制多段线时遇到了类似的问题。它需要32位整数。在
我把要点投给uint32:
问题是它需要32位的有符号整数,而不是无符号整数。这是代码中的一个微妙之处,所以很难找到,但后来这个方法奏效了:
^{pr2}$只是使用
np.int32
而不是np.uint32
在使用findContours和converxhull中的等高线时,在获得opencv2.4.3之后,我遇到了同样的问题。由于我不想降级,将contours数组元素强制转换为int可以暂时解决问题。在
相关问题 更多 >
编程相关推荐