ESP32-CAM + MicroPython 人脸识别(拍照上传 + 电脑识别)

ESP32-CAM + MicroPython 人脸识别(拍照上传 + 电脑识别)

架构:ESP32-CAM (MicroPython) 定时拍照 → WiFi 局域网上传 → 电脑(Flask + face_recognition) 识别 → 识别成功 ESP32 板载 LED 亮 3 秒。

项目结构

face-recognition-cam/
├── esp32/           # 烧录到 ESP32-CAM 的文件
│   ├── boot.py       # 连 WiFi
│   ├── main.py       # 定时拍照上传 + LED
│   └── config.json   # WiFi / 服务器IP / 拍照间隔
└── server/           # 电脑端
  ├── server.py     # 识别服务 (端口 5000)
  ├── enroll.py     # 人脸录入工具
  ├── faces/       # 人脸库 (.npy)
  └── captures/     # 上传照片与识别日志

一、电脑端部署

  1. 安装 Python 3.9+(勾选 Add to PATH)。
  2. 安装依赖:
cd E:\Zcode\face-recognition-cam\server
pip install flask opencv-contrib-python

本项目支持两种识别后端,启动时自动选择:

  • LBPH(默认):只需上面的依赖,纯 pip 安装,精度中等,已在本机验证可用。
  • face_recognition(dlib,精度更高):pip install face_recognition。 注意:dlib 在 Python 3.13 下无预编译包,安装失败就继续用默认 LBPH 即可。
  1. 查看本机局域网 IP:ipconfig → IPv4 地址(当前为 192.168.1.106)。
  2. Windows 防火墙放行 5000 端口(首次运行 Flask 时弹窗勾选”专用网络”允许即可,或: netsh advfirewall firewall add rule name="FaceServer" dir=in action=allow protocol=TCP localport=5000)。

二、网页管理台(推荐,录入人脸 / 查看记录 / 生成配置 一站完成)

cd server
python server.py

浏览器打开 http://127.0.0.1:5000 即可使用:

  • 概览:系统状态、已录入人脸(可删除)、识别记录(10 秒自动刷新)
  • 人脸录入:用电脑浏览器摄像头直接采集,输入姓名后点”采集一张”(建议 5 张),完成后点”完成并生效”
  • 抓拍照片:查看 ESP32 上传的所有照片(文件名 = 识别结果_时间)
  • ESP32 配置生成:填 WiFi 信息一键生成 config.json 内容,复制后粘贴到板子上

命令行录入工具 enroll.py 仍保留可用。

三、烧录 ESP32-CAM

1. 烧录带摄像头驱动的 MicroPython 固件

必须使用内置 camera 模块的固件(lemariva 版)。 注意:该项目的固件不在 Releases 页面,而是放在仓库的 firmware/ 目录中, 本项目已下载好:firmware/micropython_v1.21.0_camera_no_ble.bin (来源: https://github.com/lemariva/micropython-camera-driver/tree/master/firmware )

用 esptool 烧录(需安装 pip install esptool):

# 先擦除 (GPIO0 接 GND 进入烧录模式后按一下 RST)
esptool.py --port COMx erase_flash
esptool.py --port COMx --baud 921600 write_flash 0x1000 micropython_v1.21.0_camera_no_ble.bin

2. FTDI 接线(AI-Thinker ESP32-CAM)

ESP32-CAMFTDI
5V5V(必须 5V,供电要足 2A,不要用 3.3V)
GNDGND
U0RTX
U0TRX
GPIO0GND(仅烧录时接,运行时断开)

烧录/传文件时 GPIO0 接 GND 后按一下 RST;运行时断开 GPIO0 再按 RST。

3. 上传代码

用 Thonny(推荐,选解释器为 MicroPython)或 ampy/mpremote 把 esp32/boot.py、esp32/main.py、esp32/config.json 三个文件上传到板子根目录。

4. 修改配置

编辑板上 config.json:

【测试内容】这是一条通过自动化操作发布的测试文章,发布时间:2026年8月18日。

  • wifi_ssid / wifi_password:你的 WiFi(需 2.4GHz,ESP32 不支持 5GHz)
  • server_host:电脑局域网 IP(当前 192.168.1.106)
  • photo_interval_sec:拍照间隔秒数

四、运行

  1. 电脑先运行 python server.py;
  2. ESP32-CAM 断开 GPIO0 接线,按 RST 复位,即自动开始定时上传;
  3. 识别成功 → 板载红色 LED(GPIO33)亮 3 秒;server 控制台同步打印结果。

常见问题

  • 拍照失败/花屏:供电不足,换 5V 2A 电源;确认固件启用了 PSRAM。
  • 上传失败:检查电脑防火墙、IP 是否变化(DHCP 建议给电脑绑定静态 IP)、手机热点需在”允许网络发现”。
  • 识别不准:多录入几张不同光照/角度的照片;可调小 server.py 中 MATCH_THRESHOLD(更严格)。
  • WiFi 连接失败:确认是 2.4GHz 频段 WiFi。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部