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

12

我有以下代码:

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的第二个参数时,如果该数组的dtype不是numpy.int32,会出现失败的断言完全相同。 cv2.fillPolycv2.fillConvexPoly的第二个参数是否期望不同的数据类型? 如果是这样,那么我应该在cv2.fillPoly中使用什么?

1个回答

29

cv2.fillPolycv2.fillConvexPoly在其点数组的数据类型上有所不同,因为fillConvexPoly只绘制一个多边形,而fillPoly则绘制一个(Python)列表。 因此,

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

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

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

绘制所有三个。


一代表什么?颜色吗? - Roi Mulia
当时我认为是颜色,但我已经五年没有使用OpenCV了,所以我肯定会检查更新的文档并进行测试以确保。 - wil
@RoiMulia 是的,这就是颜色。 - Nimrod Morag
@NimrodMorag 谢谢!不知怎么的,你有兴趣为我的公司提供与简历相关的咨询服务吗? - Roi Mulia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接