树莓派4倒车影像项目cv2.line函数参数类型错误求解
问题排查与修复方案
错误根因
OpenCV 所有绘图相关的接口(包括cv2.line、cv2.circle、cv2.putText等),要求传入的坐标点必须为整数类型。你代码里的yAlert是通过(heightAlert/2) + 100计算得到,Python3 中/除法默认返回浮点数,因此传给cv2.line的(0,yAlert)和(widthAlert,yAlert)坐标里包含浮点值,触发参数类型不匹配的报错。
另外后续代码里的centerX、centerY也存在同样的浮点类型问题,修复yAlert后也会在后续绘图步骤触发同类报错,需要一并处理。
修复步骤
- 把所有传给OpenCV绘图接口的坐标值强制转换为整数,修改对应的代码行即可:
- 修改
yAlert的计算代码,强制转int:
yAlert = int((heightAlert/2) + 100)
- 修改
centerX、centerY的计算代码,强制转int:
centerX = int((x+x+w)/2) centerY = int((y+y+h)/2)
额外注意事项
- 你设置的摄像头分辨率是
(1080, 720),这里PiCamera的分辨率参数顺序是(宽, 高),但OpenCV读取的图像array维度是(高, 宽, 通道),你当前获取widthAlert和heightAlert的逻辑是对的,不需要调整。 - 如果修改后还有报错,可以加一行打印检查坐标值类型:
print(type(yAlert), yAlert, type(widthAlert), widthAlert),确认所有坐标都是int类型即可。
内容的提问来源于stack exchange,提问作者Luqman _
相关产品推荐
相关产品推荐

