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