几个线程报告了此问题,但是所有线程都显示固定点列表的类型(至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表现出与上述相同的问题。
答案 0 :(得分:1)
上面的纠正是-
cv2.polylines(ti, [mask], True, (255,0,0), 1)