Skip to content

oscar6251/face-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ESP32-CAM 人脸识别系统

基于ESP32-CAM和Python的实时人脸识别系统,支持人脸录入、训练和识别功能。

项目概述

本项目实现了一个完整的人脸识别解决方案,包括:

  • ESP32-CAM端的图像采集和传输
  • Python端的人脸检测、识别和训练
  • 多种通信方式(UDP网络通信、串口通信)
  • 实时视频流处理和可视化界面

系统架构

ESP32-CAM (图像采集) 
    ↓ UDP传输
Python服务器 (人脸识别)
    ↓ 识别成功
串口设备 + UDP通知

项目结构

├── esp32-cam/
│   └── camera.py              # ESP32摄像头控制程序
├── python/
│   ├── ESP32-cam摄像头识别.py    # 主要人脸识别程序
│   ├── ESP32摄像头人脸录入.py    # 人脸数据录入程序
│   ├── 数据训练.py             # 模型训练程序
│   ├── img/                   # 人脸图像存储目录
│   └── trainer/
│       └── trainer.yml        # 训练好的模型文件
└── test.py                    # 测试文件

功能特性

  • ✅ 实时视频流传输
  • ✅ 人脸检测与识别
  • ✅ 人脸数据录入
  • ✅ 模型训练
  • ✅ 置信度评估
  • ✅ 多种通信方式
  • ✅ 可视化界面

环境要求

硬件要求

  • ESP32-CAM开发板
  • USB转串口模块(用于ESP32编程)
  • 串口设备(可选,用于控制外部设备)

软件要求

ESP32端

  • MicroPython固件
  • 支持camera、network、socket模块

Python端

pip install opencv-python
pip install pillow
pip install numpy
pip install pyserial

安装与配置

1. ESP32-CAM配置

  1. 烧录MicroPython固件到ESP32-CAM
  2. 修改esp32-cam/camera.py中的WiFi配置:
wlan.connect('YOUR_WIFI_NAME', 'YOUR_WIFI_PASSWORD')
  1. 修改目标服务器IP地址:
s.sendto(buf,("YOUR_SERVER_IP",9090))

2. Python环境配置

  1. 安装依赖包:
pip install -r requirements.txt
  1. 修改python/ESP32-cam摄像头识别.py中的配置:

    • 串口配置:port = "COM7"(Windows)或port = "/dev/ttyUSB0"(Linux)
    • 目标设备IP:s.sendto(b'3', ("TARGET_IP", 9090))
  2. 确保Haar级联分类器路径正确:

face_detector = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml')

使用说明

1. 人脸数据录入

cd python
python ESP32摄像头人脸录入.py
  • 启动ESP32-CAM
  • 在显示窗口中按s键保存人脸图像
  • 按空格键退出程序
  • 图像将保存在img/目录中,格式为数字.jpg

2. 模型训练

python 数据训练.py
  • 程序会自动读取img/目录中的图像
  • 使用LBPH算法训练人脸识别模型
  • 生成的模型保存为trainer/trainer.yml

3. 人脸识别

python ESP32-cam摄像头识别.py
  • 启动ESP32-CAM
  • 程序会实时显示识别结果
  • 识别成功时会:
    • 发送串口控制信号(十六进制:ffabcdfe)
    • 发送UDP通知到目标设备
  • 按空格键退出程序

配置参数

ESP32-CAM参数

camera.framesize(camera.FRAME_VGA)  # 图像分辨率
camera.quality(10)                  # 图像质量 (0-63)
camera.brightness(0)                # 亮度调节
camera.contrast(0)                  # 对比度调节

识别参数

confidence_threshold = 50           # 置信度阈值
face_detector.detectMultiScale(
    gray, 1.1, 5,                  # 缩放因子和最小邻居数
    cv2.CASCADE_SCALE_IMAGE,
    (100,100), (300,300)           # 最小和最大人脸尺寸
)

网络配置

  • ESP32-CAM发送端口:9090
  • Python接收端口:9090
  • 通信协议:UDP
  • 数据格式:JPEG图像流

故障排除

常见问题

  1. ESP32-CAM连接失败

    • 检查WiFi名称和密码
    • 确认网络连接状态
    • 检查IP地址配置
  2. Python程序无法接收图像

    • 检查防火墙设置
    • 确认端口9090未被占用
    • 验证网络连通性
  3. 人脸识别准确率低

    • 增加训练样本数量
    • 调整置信度阈值
    • 改善光照条件
  4. 串口通信失败

    • 检查串口号配置
    • 确认波特率设置
    • 验证串口设备连接

技术细节

算法说明

  • 人脸检测:Haar级联分类器
  • 人脸检测:Haar级联分类器
  • 人脸识别:LBPH (Local Binary Patterns Histograms)
  • 图像处理:OpenCV库

通信协议

  • 图像传输:UDP协议,实时性好
  • 控制信号:串口通信,可靠性高
  • 状态通知:UDP广播

About

基于opencv的人脸识别(硬件实现于esp32-cam)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages