首页 文章

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

提问于
浏览
8

我有以下代码:

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 numpy.int32cv2.fillConvexPoly 的numpy数组失败的断言相同 . cv2.fillPolycv2.fillConvexPoly 期望第二个参数有不同的数据类型吗?如果是这样,我应该为 cv2.fillPoly 使用什么?

1 回答

  • 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)
    

    画三个 .

相关问题