即使arg类型是应该的,OpenCV折线也会引发断言失败

时间:2018-10-03 20:16:08

标签: python-3.x opencv3.0

几个线程报告了此问题,但是所有线程都显示固定点列表的类型(至int32,即CV_32S)作为解决方案。下面的点列表具有适当的类型。

>>> ti = np.zeros((400,400,3), np.uint8)                # Test image
>>> mask = np.array([[213,60],[333,240],[93,240],[150,120]], np.int32)  # Test point list
>>> cv2.polylines(ti, mask, True, (255,0,0), 1)
*** cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv\modules\imgproc\src\drawing.cpp:2437: error: (-215:Assertion failed) p.checkVector(2, CV_32S) >= 0 in function 'cv::polylines'

>>> print(mask.dtype, mask.shape)
int32 (4, 2)

我尝试更改类型(我遇到另一个错误,抱怨它是错误的类型),然后将其重新投射到int32。不能让它玩的很好...

fillConvexPoly可以正常工作(这使我获得了现在所需的东西),fillPoly表现出与上述相同的问题。

1 个答案:

答案 0 :(得分:1)

上面的纠正是-

cv2.polylines(ti, [mask], True, (255,0,0), 1)