# 人脸认证 **Repository Path**: livesleep/face-authentication ## Basic Information - **Project Name**: 人脸认证 - **Description**: 人脸识别身份认证系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-17 - **Last Updated**: 2025-11-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: Vue, JavaScript, Python ## README # 人脸识别身份认证系统 这是一个基于Vue 3前端和Python Flask后端的人脸识别身份认证系统,支持用户人脸注册、身份验证和用户管理等功能。系统采用图片上传方式进行人脸识别,无需实时摄像头即可完成身份验证,提供了友好的用户界面和完善的错误处理机制。 ## 项目概述 本项目提供了一套完整的人脸识别解决方案,通过提取和比对人脸特征向量,实现高效准确的身份认证。系统采用前后端分离架构设计,前后端通过RESTful API进行通信,保证了系统的可扩展性和灵活性。系统包含人脸重复检测、未识别友好提示等增强功能,提升了用户体验。 ## 项目结构 ``` face-authentication/ ├── backend/ # Python后端项目 │ ├── app.py # 主应用入口,处理API请求 │ ├── face_recog.py # 人脸识别核心功能 │ ├── models.py # 数据模型和数据库操作 │ ├── face_recognition.db # SQLite数据库文件 │ ├── requirements.txt # Python依赖列表 │ ├── start_server.bat # Windows启动脚本 │ └── start_server.py # 启动脚本 ├── frondend/ # Vue.js前端项目 │ ├── public/ # 静态资源 │ ├── src/ # 源代码 │ │ ├── components/ # Vue组件 │ │ ├── views/ # 页面视图 │ │ │ ├── Recognize.vue # 人脸识别页面 │ │ │ └── Register.vue # 人脸注册页面 │ │ ├── router/ # 路由配置 │ │ ├── App.vue # 根组件 │ │ └── main.js # 入口文件 │ ├── package.json # 项目配置和依赖 │ └── vite.config.js # Vite配置 ├── 测试人脸图片/ # 测试用的人脸图片 ├── README.md # 项目说明文档 └── START.md # 启动指南 ``` ## 核心功能 1. **人脸注册**:用户上传照片进行注册,系统自动提取人脸特征并保存到数据库 2. **重复注册检测**:系统会自动检测是否为同一人脸的重复注册,并给出友好提示 3. **人脸识别**:用户上传照片进行身份验证,系统比对人脸特征与已注册用户 4. **未识别友好提示**:当未识别到用户时,显示清晰的"未识别"提示,而不是错误信息 5. **用户管理**:查看和管理已注册用户,支持删除用户功能 6. **健康检查**:提供API端点监控服务运行状态 ## 技术栈 ### 前端 - **Vue 3**:采用Composition API构建响应式界面 - **Vue Router 4**:页面路由管理 - **Axios**:处理HTTP请求 - **Vite**:前端构建工具 ### 后端 - **Python 3.9**:核心编程语言 - **Flask**:轻量级Web框架 - **face_recognition**:高精度人脸识别库 - **NumPy**:科学计算库 - **Pillow**:图像处理库 - **SQLite**:轻量级数据库 - **Flask-CORS**:处理跨域请求 ## 系统特点 - **基于图片的认证**:优先使用图片上传方式,无需摄像头即可完成注册和认证 - **高精度识别**:使用face_recognition库进行精确的人脸特征提取和比对 - **重复注册检测**:智能检测同一人脸的重复注册,避免数据库污染 - **友好的用户体验**:提供清晰的操作指导和错误提示 - **本地数据存储**:采用SQLite数据库存储用户信息和人脸特征 - **响应式设计**:适配不同设备的屏幕尺寸,提供良好的用户体验 - **RESTful API**:提供标准的API接口,便于系统集成和扩展 - **完善的错误处理**:包含详细的错误提示和日志记录 ## 安装与配置 ### 系统要求 #### 前端 - Node.js 20.x 或更高版本 - npm 6.x 或更高版本 #### 后端 - Python 3.9 或更高版本 - pip 包管理器 ### 后端安装 1. 进入backend目录: ```bash cd backend ``` 2. 安装Python依赖: ```bash pip install -r requirements.txt ``` 或直接安装: ```bash pip install flask face_recognition numpy pillow flask-cors ``` 3. **注意**:face_recognition库可能需要额外的系统依赖: - Windows:可能需要Visual C++构建工具 - Ubuntu:需要安装`cmake`和`libboost`库 - macOS:需要安装Xcode命令行工具 ### 前端安装 1. 进入frontend目录: ```bash cd frondend ``` 2. 安装Node.js依赖: ```bash npm install ``` ## 运行系统 ### 1. 启动后端服务 在backend目录下运行: ```bash python app.py ``` 或使用启动脚本: ```bash # Windows double click start_server.bat # 或使用Python脚本 python start_server.py ``` 后端服务将在 http://localhost:5000 启动。 ### 2. 启动前端服务 在frondend目录下运行: ```bash npm run dev ``` 前端服务将在 http://localhost:8080 启动。 ### 3. 访问系统 打开浏览器,访问 http://localhost:8080 即可使用人脸识别身份认证系统。 ## API接口说明 ### 1. 注册用户 - **URL**: `/api/register` - **方法**: `POST` - **参数**: - `name`: 用户名称 - `image`: Base64编码的图像数据 - **成功返回** (201): ```json { "success": true, "message": "注册成功", "user_id": 1 } ``` - **重复注册返回** (409): ```json { "success": false, "error": "该人脸已注册", "existing_user": { "id": 1, "name": "张三" } } ``` - **参数错误返回** (400): ```json {"error": "缺少必要的参数"} ``` ### 2. 人脸识别 - **URL**: `/api/recognize` - **方法**: `POST` - **参数**: - `image`: Base64编码的图像数据 - **识别成功返回** (200): ```json { "success": true, "recognized": true, "user": { "id": 1, "name": "张三" } } ``` - **未识别返回** (200): ```json { "success": true, "recognized": false, "message": "未识别" } ``` - **参数错误返回** (400): ```json {"error": "缺少图像数据"} ``` ### 3. 获取所有用户 - **URL**: `/api/users` - **方法**: `GET` - **返回** (200): ```json { "success": true, "users": [ { "id": 1, "name": "张三", "created_at": "2024-01-01 12:00:00", "last_login": "2024-01-02 10:30:00" } ] } ``` ### 4. 删除用户 - **URL**: `/api/users/` - **方法**: `DELETE` - **成功返回** (200): ```json { "success": true, "message": "用户删除成功" } ``` - **用户不存在返回** (404): ```json {"error": "用户不存在"} ``` ### 5. 健康检查 - **URL**: `/api/health` - **方法**: `GET` - **返回** (200): ```json { "status": "ok", "message": "人脸识别服务运行正常" } ``` ## 前端功能说明 ### 人脸识别页面 (Recognize.vue) - 支持点击和拖拽上传图片 - 图片预览功能 - 人脸识别状态显示 - 识别成功显示用户信息 - 未识别时显示友好的"未识别"提示 - 详细的识别提示和建议 ### 人脸注册页面 (Register.vue) - 用户姓名输入和验证 - 支持点击和拖拽上传图片 - 图片预览功能 - 重复注册检测和提示 - 注册成功/失败的反馈 ## 常见问题 ### 1. 无法启动后端服务 - 检查Python版本是否符合要求(3.9+) - 确认所有依赖已正确安装 - 检查端口5000是否被占用 ### 2. 人脸识别失败 - 确保上传的图片清晰且包含完整人脸 - 检查光线条件,避免过暗或过亮 - 确保人脸在图片中占据适当比例 - 确认该人脸已注册 ### 3. 注册失败 - 确保图片中只包含一张清晰的人脸 - 检查图片格式是否支持(JPG、PNG等) - 确认未使用已注册的人脸图片重复注册 ### 4. 数据库相关问题 - 系统自动创建SQLite数据库,无需额外配置 - 如果数据库文件损坏,可删除`face_recognition.db`文件,系统将重新创建 ## 测试 项目提供了`测试人脸图片`目录,包含几张测试用的人脸照片,可用于功能测试。您可以使用这些图片进行注册和识别测试。 ## 安全考虑 - 本系统采用本地数据库存储,适合小规模应用 - 对于生产环境,建议加强API的认证和授权机制 - 可考虑添加日志记录和安全审计功能 - 建议使用HTTPS协议保护数据传输 ## 扩展建议 - 添加更多用户信息字段,如联系方式、权限级别等 - 实现多脸识别和群体识别功能 - 增加活体检测机制,防止照片攻击 - 添加用户编辑和更新功能 - 实现人脸特征数据加密存储 - 添加人脸识别历史记录功能 - 优化识别算法,提高识别准确率和速度 - 添加数据备份和恢复功能