Jetbot-AI机器人教程-人脸追踪
说明:
- 介绍jetbot如何人脸追踪
步骤:
- 基本界面:
第一步:创建一个终端,添加设备权限
$ sudo chmod 777 /dev/ttyTHS1
第二步:在JetBot上运行程序:
通过导航到http://<jetbot_ip_address>:8888连接到您的机器人
使用默认密码jetbot登录
通过选择Kernel -> Shutdown All Kernels...来关闭所有其他正在运行的笔记本...
导航到~/Notebooks/face_tracking/
打开并跟随face_tracking.ipynb笔记操作
运行程序导入相关包,创建摄像机实例
from jetbot import Camera
from jetbot import bgr8_to_jpeg
import PID
camera = Camera.instance(width=720, height=720)
- 创建运动控制变量
global face_x, face_y, face_w, face_h
face_x = face_y = face_w = face_h = 0
global target_valuex
target_valuex = 2048
global target_valuey
target_valuey = 2048
- 创建PID控制实例
xservo_pid = PID.PositionalPID(1.9, 0.3, 0.35)
yservo_pid = PID.PositionalPID(1.5, 0.2, 0.3)
- 创建PTZ云台总线转向控制实例
fromfrom servoserialservose import ServoSerial
servo_device = ServoSerial()
- 创建显示控件
import traitlets
import ipywidgets.widgets as widgets
from IPython.display import display
face_image = widgets.Image(format='jpeg', width=300, height=300)
display(face_image)
- 人脸检测需要级联分类器,加载"Haar"级联分类器,123.xml是Haar级联数据,可以从OpenCV3源代码中的data/haarcascades获得此xml,然后通过face_cascade.detectMultiScale() 执行实际的面部检测
import cv2
face_cascade = cv2.CascadeClassifier('123.xml')
- 运行主进程。在人脸识别获得当前人脸的位置之后,PTZ控制器将通过PID控制器跟踪人脸。这里使用位置PID算法。
while 1:
frame = camera.value
frame = cv2.resize(frame, (300, 300))
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale( gray )
if len(faces)>0:
(face_x, face_y, face_w, face_h) = faces[0]
# cv2.rectangle(frame,(face_x,face_y),(face_x+face_h,face_y+face_w),(0,255,0),2)
cv2.rectangle(frame,(face_x+10,face_y),(face_x+face_w-10,face_y+face_h+20),(0,255,0),2)
xservo_pid.SystemOutput = face_x+face_h/2
xservo_pid.SetStepSignal(150)
xservo_pid.SetInertiaTime(0.01, 0.006)
target_valuex = int(2048 + xservo_pid.SystemOutput)
yservo_pid.SystemOutput = face_y+face_w/2
yservo_pid.SetStepSignal(150)
yservo_pid.SetInertiaTime(0.01, 0.006)
target_valuey = int(2048+yservo_pid.SystemOutput)
servo_device.Servo_serial_double_control(1, target_valuex, 2, target_valuey)
face_image.value = bgr8_to_jpeg(frame)
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号