You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用cv2.circle报(-5:Bad argument)center参数错误如何解决

OpenCV 4.6.0 cv2.circle参数报错修复

异常相关信息

触发异常的代码:

cv2.circle(img=frame, center=(x, y), radius=20, color=(0, 255, 255))

报错回溯:

文件 "C:\Users\manis\PycharmProjects\AiMouse\main.py" 第30行,执行上述cv2.circle语句时抛出异常:
cv2.error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) 调用'circle'函数时出现参数错误
重载解析失败:

  • 无法解析'center'参数:序列索引为0的元素类型错误
  • 无法解析'center'参数:序列索引为0的元素类型错误
    触发场景:AiMouse项目开发中,在读取到的视频帧frame上绘制圆形标记时触发。

问题诱因

OpenCV 4.x版本对绘图接口的参数类型校验严格,cv2.circle的center参数要求传入由整数类型数值组成的二元坐标元组。报错原因是传入的x、y为浮点类型值——这类值通常来自手部关键点检测的归一化坐标换算、矩阵运算返回的numpy浮点标量,不符合参数类型要求,导致重载解析失败。

修复方案

传入center参数前,将x、y坐标值强制转换为整数即可,修改后代码如下:

cv2.circle(img=frame, center=(int(x), int(y)), radius=20, color=(0, 255, 255))

额外注意

  • OpenCV所有原生绘图接口(cv2.circle、cv2.rectangle、cv2.line、cv2.putText等)的坐标、半径、线宽参数均要求传入整数类型,哪怕浮点值本身是整数(如20.0),在4.x版本中也会触发同类参数错误。
  • 如果x、y是numpy浮点类型(np.float32、np.float64等),直接用int()强转即可生效,无需额外做类型兼容处理。

内容的提问来源于stack exchange,提问作者Manish Kamble

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 17:09:18