跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Mac系统Visual Studio下OpenCV绘图报错:cv.circle()函数类型错误如何解决?

在Mac系统使用Visual Studio和OpenCV进行图像处理时,
cv.circle()
函数可能出现类型错误,导致绘图失败。本文分析并解决此问题。 错误信息通常为:“opencv(4.5.2) :-1: error: (-5:bad argument) in function 'circle' overload resolution failed: - can't parse 'center'. sequence item with index 0 has a wrong type”。 这表明
cv.circle()
函数无法解析传入的圆心坐标。 问题原因在于
cv.circle()
函数期望接收整数类型的坐标元组
(x, y)
,而传入的坐标数据类型不符。 例如,以下代码片段:
pts1 = np.float32([[657,122],[738,235],[478,249],[559,362]]) cv.circle(img, (pts1[0][0], pts1[0][1]), 5, (0,0,255), cv.filled)
pts1
是一个NumPy浮点数组,
pts1[0][0]
和
pts1[0][1]
是浮点数,而非整数。 Python 3.14.3 微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。 下载 解决方法是将坐标数据转换为整数类型。 修改
pts1
的定义,使用Python列表存储整数坐标:
pts1 = [[657,122],[738,235],[478,249],[559,362]]
或者,保持
pts1
为NumPy数组,但在调用
cv.circle()
函数前,将坐标转换为整数:
pts1 = np.float32([[657,122],[738,235],[478,249],[559,362]]) cv.circle(img, (int(pts1[0][0]), int(pts1[0][1])), 5, (0,0,255), cv.filled)
通过以上方法,确保
cv.circle()
函数接收的是整数类型的坐标,即可解决类型错误,成功绘制圆点。 修改后的代码能够在图像上正确绘制出指定的点。

相关文章