当摄像头变焦10倍时,目标跟随的影响因子

当摄像头变焦10倍时,图像的视角会变窄,物体在图像中的尺寸会变大。为了保证舵机不会因变焦而出现大范围的转动,需要对代码中与图像尺寸、坐标计算以及舵机角度调整相关的参数进行调整。以下是需要重点关注和调整的参数:

1. 摄像头分辨率

变焦后,摄像头的视角变窄,但分辨率不变。因此,需要调整摄像头的分辨率,以适应变焦后的视角。例如,可以将分辨率从320x240调整为更高的分辨率,如640x480或更高。这样可以保持物体在图像中的相对位置不变。

# 设置摄像头分辨率为 640x480
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

2. 死区范围(dead_zone

死区范围用于限制舵机的微小调整。变焦后,物体在图像中的位置变化会更明显,因此需要适当增加死区范围,以减少舵机的频繁调整。

# 增加死区范围
dead_zone = 40  # 原来是20,可以根据实际情况调整

3. 舵机角度调整的比例因子

变焦后,物体在图像中的位置变化会更大,因此需要减小舵机角度调整的比例因子,以避免舵机的大范围转动。

# 减小比例因子
x_error = max(-dead_zone, min(dead_zone, (center_x - 0.5) * iw))  # 限制 x_error 范围
y_error = max(-dead_zone, min(dead_zone, (center_y - 0.5) * ih))  # 限制 y_error 范围

# 调整比例因子
new_servo_x_angle = servo_x_angle - int(x_error * 0.05)  # 原来是0.1,减小为0.05
new_servo_y_angle = servo_y_angle + int(y_error * 0.05)  # 原来是0.1,减小为0.05

4. 平滑系数(alpha

平滑系数用于平滑舵机角度的变化。变焦后,物体位置的变化更剧烈,因此需要适当增加平滑系数,以平滑舵机的运动。

# 增加平滑系数
alpha = 0.2  # 原来是0.1,增加为0.2

5. 人体宽度的像素计算

变焦后,人体在图像中的宽度会变大,因此需要调整人体宽度的像素计算公式,以保持距离计算的准确性。

# 计算人体宽度在图像中的像素尺寸
body_width_pixels = abs(left_shoulder.x - right_shoulder.x) * iw

由于变焦后人体宽度的像素值会变大,可以适当调整焦距(FOCAL_LENGTH)或已知人体宽度(KNOWN_BODY_WIDTH),以保持距离计算的准确性。例如:

# 调整焦距
FOCAL_LENGTH = 3000  # 原来是300,根据实际情况调整

6. 舵机角度范围的限制

确保舵机角度的限制范围仍然有效。变焦后,物体在图像中的位置变化更大,因此需要确保舵机角度不会超出其支持的范围。

# 再次确保舵机角度在有效范围内
new_servo_x_angle = max(0, min(270, new_servo_x_angle))
new_servo_y_angle = max(0, min(180, new_servo_y_angle))

总结

以下是调整后的关键参数:

  1. 摄像头分辨率:提高分辨率(如640x480)。

  2. 死区范围:增加死区范围(如40)。

  3. 舵机角度调整的比例因子:减小比例因子(如0.05)。

  4. 平滑系数:增加平滑系数(如0.2)。

  5. 焦距或已知人体宽度:根据实际情况调整焦距或人体宽度的像素计算。

  6. 舵机角度范围限制:保持舵机角度在有效范围内。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道1993

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值