一、用到了以下一些api
1. 单关节控制
send_angle(id, degree, speed)
- 功能: 发送指定的单个关节运动至指定的角度
- 参数说明:
- id: 代表机械臂的关节,用数字1-6来表示。
- degree: 表示关节的角度
- speed:表示机械臂运动的速度,范围0~100
- 返回值: 1
set_encoder(joint_id, encoder, sp)
-
功能: 发送指定的单个关节运动至指定的电位值
-
参数说明:
-
joint_id: 代表机械臂的关节,用数字1-6来表示。
-
encoder:表示机械臂的电位值,取值范围是 0 ~ 4096
-
sp: 表示机械臂运动的速度,范围1~100
-
返回值: 1
二、使用cv获取面部识别
由于cv获取的面部检测是多面部检测,所以我们挑选最大的那一个,定位其中央坐标。当然,如果机器配置跟不上,可以降低帧率或者不显示画面。
while True:
# Capture frame-by-frame
ret, frame = cap.read()
# 镜像效果
frame = cv2.flip(frame, 1) # 水平翻转帧
# Convert to grayscale
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Load the Haar cascade for face detection
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# Detect faces
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
# 选择最大的一个人脸
if len(faces) > 0:
largest_face = max(faces, key=lambda f: f[2] * f[3]) # 计算面积
(x, y, w, h) = largest_face
center_x = x + w // 2
center_y