我有以下代码:
import cv2
import numpy
ar = numpy.zeros((10,10))
triangle = numpy.array([ [1,3], [4,8], [1,9] ], numpy.int32)
如果我像这样使用 cv2.fillConvexPoly:
cv2.fillConvexPoly(ar, triangle, 1)
那么结果就如预期的那样。但是,如果我尝试:
cv2.fillPoly(ar, triangle, 1)
然后我得到一个失败的断言。这似乎与我使用 numpy 数组时失败的断言相同cv2.fillConvexPoly
没有 dtypenumpy.int32
. Do cv2.fillPoly
and cv2.fillConvexPoly
期望第二个参数有不同的数据类型?如果是这样,我应该用来做什么cv2.fillPoly
?
cv2.fillPoly
and cv2.fillConvexPoly
对点数组使用不同的数据类型,因为fillConvexPoly
只绘制一个多边形并且fillPoly
绘制它们的(Python)列表。因此,
cv2.fillConvexPoly(ar, triangle, 1)
cv2.fillPoly(ar, [triangle], 1)
是调用这两个方法的正确方法。如果你有square
and hexagon
点数组,你可以使用
cv2.fillPoly(ar, [triangle, square, hexagon], 1)
绘制所有三个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)