相机+二维舵机云台的人员追踪

主要需要的电子器件:

MaixPro 相机:视觉处理

ESP32-S3 单片机:系统的控制与通信,处理坐标偏差

二维舵机云台:调整其相机位置

视觉检测:使用 MaixPy 内置的 face_detect

核心代码:

import sensor import image import lcd import time # 初始化LCD、摄像头 lcd.init() sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) # 320x240,平衡帧率和清晰度 sensor.run(1) sensor.skip_frames(time=2000) # 跳过初始模糊帧 # 初始化串口(与ESP32-S3通信,波特率要与ESP32-S3保持一致,比如115200) from machine import UART uart = UART(3, 115200, tx=Pin(4), rx=Pin(5)) # 对应MaixPro的引脚,需实际核对 while True: img = sensor.snapshot() # 采集一帧图像 faces = img.find_face() # 检测人脸 if faces: for face in faces: img.draw_rectangle(face.rect(), color=(255, 0, 0)) # 画框标记人脸 # 计算人脸中心坐标 face_x = face.x() + face.w() // 2 face_y = face.y() + face.h() // 2 img.draw_cross(face_x, face_y, color=(0, 255, 0)) # 标记人脸中心 # 计算与画面中心的偏移量(画面中心:160, 120,对应QVGA分辨率) offset_x = face_x - 160 offset_y = face_y - 120 # 发送偏移数据给ESP32-S3(格式:"X:xxx,Y:yyy\r\n",方便ESP32-S3解析) send_data = f"X:{offset_x},Y:{offset_y}\r\n" uart.write(send_data.encode()) # 显示画面到LCD lcd.display(img) time.sleep_ms(10) # 轻微延时,稳定帧率

通信:UART通信

云台位置矫正:

控制算法:

  • 设定舵机初始位置
  • 接收 MaixPro 传来的偏移量 offset_xoffset_y
  • 计算舵机目标角度:目标角度 = 当前角度 + 偏移量 × 比例系数(比例系数需实际调试,避免云台抖动或响应过慢)。
  • 限制舵机角度范围( 0°~180°)
相关推荐
木子啊5 小时前
ProCamera 智能水印相机解决方案 (UniApp)
数码相机·uni-app·水印相机·小程序水印
chen_jared19 小时前
slam十四讲第五章习题:相机内参变化与SLAM快门选择
数码相机·slam·标定
8K超高清1 天前
回望2025,纷呈超清智能科技影像世界
网络·人工智能·科技·数码相机·智能硬件
ballball~~1 天前
ISP-AWB(Auto White Balance 白平衡)
图像处理·数码相机·算法
JMchen1231 天前
Android CameraX深度解析:从Camera1到CameraX的相机架构演进
android·java·数码相机·架构·kotlin·移动开发·android-studio
PHOSKEY2 天前
光子精密3D工业相机实现3C/汽车/半导体连接器pin针高效质检
数码相机·3d·汽车
Piar1231sdafa2 天前
【计算机视觉 01】传送带煤炭识别与计量:基于RPN-X101-FPN模型的输煤量检测系统_1
人工智能·数码相机·计算机视觉
一起养小猫2 天前
Flutter for OpenHarmony多媒体功能开发完全指南
数码相机·flutter
labview_自动化2 天前
线扫相机记录
数码相机