# python人脸识别 **Repository Path**: joshua_er/python-facial-recognition ## Basic Information - **Project Name**: python人脸识别 - **Description**: 人工智能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-29 - **Last Updated**: 2026-02-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 人脸识别项目 这是一个使用 Python 和 OpenCV 实现的人脸识别系统,可以检测摄像头中的人脸并识别指定的用户。 ## 功能特点 - 实时检测摄像头画面 - 识别已知人脸 - 支持多光线、戴眼镜等多种状态识别 - 检测到指定人脸时显示消息 - 支持批量加载已知人脸 - 支持灯光自动控制(检测到人打开灯,离开关闭灯) - 可扩展为播放音频 ## 环境要求 - Python 3.8+ - Windows 10/11 或 Linux - 摄像头设备 ## 安装步骤 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` **注意**: 如果安装 `dlib` 失败,请先安装 Visual Studio C++ Build Tools,然后执行: ```bash pip install dlib ``` 或者使用预编译的 wheel 文件: ```bash pip install dlib-binary ``` ## 快速开始 ### 方式一:自动收集训练数据(推荐) 使用训练工具自动收集多张不同状态的照片: ```bash # 收集10张照片(默认名字为"帅帅") python train_face_model.py # 或指定名字和数量 python train_face_model.py --name "你的名字" --num 15 ``` **收集照片建议:** - 按空格键拍照,每张改变姿势或光线 - 建议收集 5-15 张照片 - 包含不同状态: - ✅ 正常光线 / 弱光 / 强光 - ✅ 戴眼镜 / 不戴眼镜 - ✅ 不同角度(正面、左侧、右侧) - ✅ 不同表情 ### 方式二:手动准备训练数据 1. 在项目目录下创建 `known_faces` 文件夹 2. 将包含你人脸的图片放入该文件夹 3. 建议准备多张不同状态的图片(5-15张) ### 3. 配置人脸信息 编辑 `faces.txt` 文件,添加你的人脸信息: ``` known_faces/my_face_1.jpg,你的名字 known_faces/my_face_2.jpg,你的名字 known_faces/my_face_3.jpg,你的名字 known_faces/my_face_4.jpg,你的名字 known_faces/my_face_5.jpg,你的名字 ``` 每行格式为:`图片路径,姓名` ## 启动方法 ### 方式一:使用 face_recognition_app.py(推荐) 基于深度学习,识别准确率更高,对光线变化和戴眼镜鲁棒性更好。 ```bash python face_recognition_app.py ``` ### 方式二:使用 face_detection_app.py 基于 OpenCV LBPH 算法,支持灯光自动控制功能。 ```bash python face_detection_app.py ``` **功能说明:** - 检测到人脸时自动打开灯光 - 离开5秒后自动关闭灯光 - 可以通过代码接入实际的硬件控制 ### 快捷键 - 按 `q` 键退出程序 ## 参数调优 ### face_recognition_app.py 参数调整 修改 `face_recognition_app.py` 中的容差值: ```python app = FaceRecognitionApp(video_source=0, tolerance=0.6) ``` - `tolerance`: 人脸识别容差值(0.4-0.7,越小越严格) - 0.5-0.55:严格,避免误识别 - 0.6:推荐值,平衡准确率和识别率 - 0.7:宽松,提高识别率但可能误识别 ### face_detection_app.py 参数调整 修改 `face_detection_app.py` 中的置信度阈值(第252行): ```python if label == 0 and confidence < 60: # 阈值默认60 ``` - `confidence`: LBPH置信度阈值(40-80,越小越严格) - 40-50:严格 - 50-60:推荐值 - 60-80:宽松 ### 灯光控制参数(face_detection_app.py) ```python self.absence_threshold = 5 # 离开时间阈值(秒),超过此时间关闭灯光 ``` ## 扩展功能:播放音频 ### 安装 pygame ```bash pip install pygame ``` ### 准备音频文件 1. 创建 `audio` 文件夹 2. 放入对应的音频文件(如 `welcome.mp3`) ### 启用音频播放 在 `face_recognition_app.py` 的 `on_face_detected` 方法中取消注释: ```python def on_face_detected(self, name): # ... 现有代码 ... # 播放音频 import pygame pygame.mixer.init() pygame.mixer.music.load(f'audio/{name}.mp3') pygame.mixer.music.play() ``` ## 灯光控制扩展 在 `face_detection_app.py` 中的灯光控制方法中添加实际硬件控制代码: ```python def open_light(self): """打开灯光""" if not self.light_is_on: self.light_is_on = True print("💡 灯光已打开") # 方式1: GPIO控制(树莓派) # import RPi.GPIO as GPIO # GPIO.setup(relay_pin, GPIO.OUT) # GPIO.output(relay_pin, GPIO.HIGH) # 方式2: HTTP请求(智能灯泡) # import requests # requests.post("http://smart-bulb/api/on") def close_light(self): """关闭灯光""" if self.light_is_on: self.light_is_on = False print("💡 灯光已关闭") # 添加实际的关闭灯光代码 ``` ## 项目结构 ``` python-face/ ├── face_recognition_app.py # 主程序(基于深度学习,推荐) ├── face_detection_app.py # 主程序(基于OpenCV LBPH,带灯光控制) ├── train_face_model.py # 训练工具(自动收集训练数据) ├── faces.txt # 人脸配置文件 ├── requirements.txt # 依赖列表 ├── known_faces/ # 存放已知人脸图片 │ ├── my_face_1.jpg │ ├── my_face_2.jpg │ └── ... ├── audio/ # 存放音频文件(可选) │ └── welcome.mp3 └── README.md # 说明文档 ``` ## 常见问题 ### 1. 无法安装 dlib - 安装 Visual Studio C++ Build Tools - 或使用 `pip install dlib-binary` ### 2. 摄像头无法打开 - 检查摄像头是否被其他程序占用 - 尝试更改 `video_source` 参数(0, 1, 2...) - 确认摄像头驱动已安装 ### 3. 识别不准确 **解决方法:** - 收集更多不同状态的照片(5-15张) - 确保照片清晰、光线充足 - 调整 `tolerance` 或 `confidence` 参数 - 使用 `face_recognition_app.py`(准确率更高) ### 4. 戴眼镜时识别失败 **解决方法:** - 收集戴眼镜和不戴眼镜的两种状态照片 - 建议各收集 3-5 张 - 增加不同角度的照片 ### 5. 光线变化大时识别失败 **解决方法:** - 收集强光、弱光、室内光等不同光线下的照片 - 建议每种光线收集 2-3 张 - 使用 `face_recognition_app.py`(对光线变化更鲁棒) ## STM32硬件集成 本系统支持通过STM32开发板控制LED灯,实现检测人脸时自动亮灯。 ### 快速开始 1. **烧录STM32程序** - 参考 `STM32集成指南.md` 中的详细步骤 - 支持 STM32CubeIDE、Keil MDK、Arduino IDE 等多种方式 2. **硬件连接** - STM32 PA9 (TX) <---> USB转TTL RX - STM32 PA10 (RX) <---> USB转TTL TX - STM32 GND <---> USB转TTL GND - STM32 5V <---> USB转TTL 5V 3. **检测串口** ```bash python test_serial.py ``` 4. **配置串口号** - 修改 `face_detection_app.py` 第467行 - 设置 `serial_port='COM3'`(Windows)或 `'/dev/ttyUSB0'`(Linux) 5. **运行程序** ```bash python face_detection_app.py ``` ### 详细文档 完整的STM32集成指南请查看:`STM32集成指南.md` 包含内容: - STM32代码编译和烧录(4种方法) - 硬件连接详细说明 - 软件配置步骤 - 故障排除指南 - 进阶功能开发 ## 技术栈 - OpenCV: 视频处理和人脸检测 - face_recognition: 基于dlib的深度学习人脸识别 - Dlib: 人脸特征提取 - NumPy: 数值计算 - Pygame(可选): 音频播放 ## 部署建议 ### 树莓派部署(推荐) 1. 安装系统:Raspberry Pi OS 2. 安装依赖:`pip install -r requirements.txt` 3. 连接摄像头(CSI或USB) 4. 接入智能灯泡或继电器控制灯光 5. 运行程序:`python face_detection_app.py` ### 其他嵌入式方案 如果需要更低成本的方案,可以考虑: - ESP32-CAM + 继电器模块 - K210 AI芯片 - STM32 + 专用AI芯片 ## 许可证 MIT License