我正在制作一个手部识别应用程序,当我输入手部地标编号时,它应该在其周围画一个圆圈。这工作正常,但是当我尝试填充圆圈时,它应该填充它,但我不知道为什么,cv2.FILLED 显示错误。有什么问题吗?
解决方案:
if filled:
cv2.circle((lmlist[1], lmlist[2]), radius=radius, color=(col[3], col[2], col[1]), thickness=cv2.FILLED)
else:
...
说明:
您的代码有两个问题。
首先,正如Friedrich在你的问题的评论中提到的那样,你不能在关键字参数之后有位置参数。也就是说,你不能在 Python 中执行此操作:
func(1, 2, x=3, y='b', 8)
# ^^^
# This must also be a keyword argument
其次,您将
thickness
的值传递两次。
这是 cv2.circle
的函数签名:
def circle(
img: cv2.typing.MatLike,
center: cv2.typing.Point,
radius: int,
color: cv2.typing.Scalar,
thickness: int = ...,
lineType: int = ...,
shift: int = ...) -> cv2.typing.MatLike:
要填充圆圈,您可以传递
-1
(或 cv2.FILLED
)作为 thickness
参数。
检查文档中的cv2::circle
:
厚度 圆形轮廓的厚度(如果为正)。负值(如 FILLED)表示要绘制实心圆。