OpenCV cv2.fillPoly与cv2.fillConvexPoly:多边形顶点数组的预期数据类型?

时间:2013-07-10 23:50:14

标签: python opencv

我有以下代码:

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)

然后我得到一个失败的断言。如果我使用没有dtype cv2.fillConvexPoly的{​​{1}}的numpy数组,这似乎与失败的断言完全相同。 numpy.int32cv2.fillPoly期望第二个参数有不同的数据类型吗?如果是这样,我应该为cv2.fillConvexPoly使用什么?

1 个答案:

答案 0 :(得分:19)

cv2.fillPolycv2.fillConvexPoly为其点数组使用不同的数据类型,因为fillConvexPoly只绘制一个多边形,fillPoly绘制(python)列表。因此,

cv2.fillConvexPoly(ar, triangle, 1)
cv2.fillPoly(ar, [triangle], 1)

是调用这两种方法的正确方法。如果您有squarehexagon点数组,则可以使用

cv2.fillPoly(ar, [triangle, square, hexagon], 1)

画三个。