
在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]是浮点数,而非整数。
解决方法是将坐标数据转换为整数类型。 修改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()函数接收的是整数类型的坐标,即可解决类型错误,成功绘制圆点。 修改后的代码能够在图像上正确绘制出指定的点。
以上就是Mac系统Visual Studio下OpenCV绘图报错:cv.circle()函数类型错误如何解决?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号