# OpenCV_Camera **Repository Path**: yang-zipengmn/open-cv_camera ## Basic Information - **Project Name**: OpenCV_Camera - **Description**: 本系统是一套端到端的智能人脸识别解决方案,旨在解决传统安防系统实时性差、数据孤岛等问题。项目以 OpenCV 为核心视觉引擎,实现了毫秒级的人脸检测与特征比对;后端采用 MySQL 关系型数据库,规范化管理人脸特征向量与业务数据。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-31 - **Last Updated**: 2026-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenCV 人脸识别系统 基于 OpenCV 的实时人脸识别系统,支持人脸检测、人脸识别、人脸注册,并集成 MySQL 数据库和 MQTT 消息推送。 ## 功能特性 - **人脸检测**:使用 YuNet 模型进行实时人脸检测 - **人脸识别**:使用 FaceRecognizerSF 模型进行人脸识别 - **人脸注册**:支持用户人脸信息注册到数据库 - **数据库存储**:使用 MySQL 存储用户信息和人脸特征 - **MQTT 推送**:当检测到特定用户时通过 MQTT 发布消息 ## 项目结构 ``` ├── models/ │ ├── face_recognizer_fast.onnx # 人脸识别模型 │ └── yunet.onnx # 人脸检测模型 ├── photos/ │ └── 1.jpg # 拍照保存目录 ├── main.cpp # 主程序源码 ├── CMakeLists.txt # CMake 配置文件 └── README.md # 项目说明文档 ``` ## 依赖环境 ### 必需依赖 1. **OpenCV 4.x** - 计算机视觉库(需包含 face 模块) 2. **MySQL Connector/C** - MySQL 数据库驱动 3. **Eclipse Paho MQTT C** - MQTT 客户端库 ### 依赖安装 #### Ubuntu/Debian ```bash # 安装 OpenCV 及相关依赖 sudo apt-get update sudo apt-get install libopencv-dev libopencv-face-dev # 安装 MySQL Connector/C sudo apt-get install libmysqlclient-dev # 安装 Paho MQTT C git clone https://github.com/eclipse/paho.mqtt.c.git cd paho.mqtt.c mkdir build && cd build cmake .. make sudo make install ``` ## 编译运行 ### 编译项目 ```bash mkdir build && cd build cmake .. make ``` ### 运行程序 ```bash ./opencv_face_recognition ``` ## 使用说明 ### 系统操作 | 按键 | 功能 | |------|------| | `空格` | 拍照保存到 photos/1.jpg | | `q` | 退出程序 | ### 人脸注册 取消注释 `main()` 函数中的注册代码块: ```cpp // 注册三个用户 for (int i = 0; i < 3; i++) { registerFace(); } ``` 运行程序后按照提示输入用户 ID 和视力信息,正对摄像头按空格键完成注册。 ### 人脸识别 程序启动后会自动从数据库加载已注册用户的人脸特征,实时进行人脸识别: - 绿色框:已识别用户,显示用户 ID - 红色框:未识别用户(unknow) ### MQTT 消息推送 当检测到用户 "junge" 时,通过 MQTT 向主题 `itmojun/cmd` 发布消息: - `"e"` - 用户进入 - `"f"` - 用户离开(10秒无检测) ## 数据库配置 ### MySQL 数据库设置 数据库连接信息(硬编码在源码中): - 主机:localhost - 端口:3306 - 用户名:junge - 密码:abcd.1234 - 数据库:mydb ### 表结构 ```sql CREATE TABLE user ( id VARCHAR(32) PRIMARY KEY, -- 用户 ID sight FLOAT, -- 用户视力 faceid BLOB -- 人脸特征向量 ); ``` ## MQTT 配置 - 服务器地址:tcp://itmojun.com:1883 - 主题:itmojun/cmd - QoS:1 ## 模型文件 需将以下 ONNX 模型放置在 `models/` 目录: - `yunet.onnx` - 人脸检测模型 - `face_recognizer_fast.onnx` - 人脸识别模型 可从 OpenCV 官方模型库下载。 ## 技术实现 ### 人脸检测 使用 YuNet 轻量级人脸检测模型,支持: - 人脸区域检测 - 关键点检测(眼睛、鼻子、嘴巴) - 置信度评估 ### 人脸识别 使用 FaceRecognizerSF 模型: - 人脸对齐和裁剪 - 128 维特征向量提取 - 余弦距离相似度匹配(阈值:0.363) ## 许可证 本项目仅供学习和研究使用。 ## 注意事项 1. 确保摄像头设备可用(默认使用设备 0) 2. 首次运行前需确保 MySQL 服务已启动且表结构已创建 3. MQTT 消息推送需要网络连接