# smart_camera_system_1 **Repository Path**: another-road/smart_camera_system_1 ## Basic Information - **Project Name**: smart_camera_system_1 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-02-25 - **Last Updated**: 2026-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Smart Camera System 将普通摄像头变成 AI智能摄像头 智能摄像头控制系统 - 支持Windows和Linux ## 功能特性 ### 核心功能 - **实时视频预览**: Web界面实时查看摄像头画面 - **拍照功能**: 立即拍照并保存到本地 - **视频录制**: 手动录制和连续循环录制 - **监控回放**: 查看已保存的照片和视频 ### 安全与访问控制 - **用户登录**: 用户名密码验证(默认:admin/admin) - **验证码保护**: 数学计算式验证码,防止暴力破解 - **本地访问限制**: 仅支持本地访问,保护隐私安全 ### 智能检测与分析 - **行为分析**: 跌倒检测、打架检测、人群聚集检测 - **异常检测**: 火焰检测、烟雾检测 - **智能追踪**: 目标选择后自动跟随,显示追踪框和移动方向 - **区域入侵检测**: 指定区域报警,入侵时触发警报 - **物品移除检测**: 检测物品被移除时触发报警 - **人脸识别**: v3.0高精度识别,支持MediaPipe FaceMesh (90-95%准确率) - **车牌识别**: 支持中国车牌识别,蓝牌/黄牌/新能源 ### 报警与通知 - **声光报警**: 检测到异常时自动触发声音和灯光报警 - **语音报警**: 不同事件类型使用不同的语音提示 - 摔倒/打架:"别打架,有事好商量" - 区域入侵:"该区域禁止入内,请立即离开" - 物品移除:"不可以拿走东西" ### 高级功能 - **图片搜索**: 监控回放中根据指定图片搜索相似画面 - **视频清理**: 预览并清理超过7天的旧视频 - **事件记录**: 所有检测事件自动记录并保存截图 - **调试日志**: 详细的调试日志写入文件,便于问题排查 - **人脸数据库管理**: 注册、删除、查看已注册人脸 - **人脸识别日志**: 完整的人脸识别事件记录,包括识别、注册、删除、陌生人检测 - **陌生人检测报警**: 自动检测并记录未注册的陌生人 - **车牌数据库管理**: 支持白名单、黑名单、普通车牌的注册、删除和查看 - **车牌识别日志**: 完整的车牌识别事件记录,包括识别、注册、删除 - **车牌黑白名单**: 支持白名单车辆通行、黑名单车辆报警 - **车牌识别UI**: Web界面集成车牌识别功能 ## 系统要求 ### Windows - Windows 10/11 (64位) - Python 3.8+ - 摄像头设备 ### Linux - Ubuntu 20.04+ 或其他主流发行版 - Python 3.8+ - OpenCV依赖库 ## 安装步骤 ### Windows安装 1. 解压项目文件夹 2. 双击运行 `setup_windows.bat` 3. 等待依赖安装完成 ### Linux安装 1. 解压项目文件夹 2. 打开终端,进入项目目录 3. 运行: `chmod +x setup.sh && ./setup.sh` ## 使用方法 ### 启动Web服务器 ```bash # 激活虚拟环境(如果使用) venv\Scripts\activate # Windows # 或 source venv/bin/activate # Linux # 启动Web服务器 python web_app.py ``` ### 访问Web界面 在浏览器中打开: `http://localhost:5000` ### 登录系统 - 默认用户名: `admin` - 默认密码: `admin` - 输入验证码答案(如:12 + 5 = ? 则输入 17) ### 主要功能说明 #### 实时预览与控制 - **实时视频流**: 查看摄像头实时画面 - **拍照**: 点击拍照按钮立即保存当前画面 - **录制控制**: 开始/停止手动视频录制 - **连续录制**: 开启/关闭连续循环录制 #### 智能分析 - **行为分析**: 开启后实时检测跌倒、打架、人群聚集 - **异常检测**: 自动检测火焰和烟雾 - **智能追踪**: 在视频画面上拖拽选择目标,系统自动跟随 - **区域入侵**: 设置监控区域,进入区域时触发报警 - **物品移除**: 监控物品,被移除时触发报警 #### 人脸识别 - **注册人脸**: 拍照或上传图片注册新的人脸 - **识别人脸**: 实时识别已注册的人脸 - **管理人脸**: 查看已注册人脸列表,清空所有人脸 #### 车牌识别 - **识别车牌**: 拍照或上传图片识别车牌 - **支持类型**: 蓝牌、黄牌、新能源车牌 - **结果显示**: 显示车牌号码、置信度、省份信息 #### 报警设置 - **启用/禁用报警**: 一键开启或关闭所有报警 - **停止报警**: 报警触发后可手动停止 - **语音提示**: 不同事件使用不同的语音消息 #### 监控回放 - **照片查看**: 浏览所有保存的照片 - **视频回放**: 观看已录制的视频 - **图片搜索**: 上传图片,在视频中搜索相似画面 - **视频清理**: 查看并删除超过7天的旧视频 ## 智能追踪功能说明 ### 功能特点 - **目标选择**: 在视频画面上拖拽选择要追踪的目标 - **自动跟随**: 使用OpenCV CSRT算法实现高精度目标追踪 - **可视化反馈**: 实时显示追踪框、目标中心点和画面中心点 - **移动提示**: 根据目标位置提示摄像头移动方向 - **目标丢失检测**: 目标丢失时显示红色提示 ### 使用方法 1. 启动Web服务器后,在主界面找到"🎯 选择追踪目标"按钮 2. 点击按钮后,在视频画面上拖动选择要追踪的目标 3. 松开鼠标后系统会自动开始追踪 4. 视频画面上会显示追踪信息 5. 点击"⏹️ 停止追踪"按钮可结束追踪 ## 区域入侵检测功能说明 ### 功能特点 - **区域设置**: 在视频画面上绘制多边形监控区域 - **多区域支持**: 可同时设置多个监控区域 - **区域开关**: 每个区域可独立启用/禁用 - **入侵检测**: 检测到人或物体进入区域时触发报警 ### 使用方法 1. 在主界面找到区域入侵检测功能 2. 点击"绘制区域"按钮 3. 在视频画面上依次点击绘制多边形区域 4. 完成绘制后保存区域 5. 启用区域监控,进入区域时会触发报警 ## 物品移除检测功能说明 ### 功能特点 - **物品选择**: 在视频画面上选择要监控的物品 - **持续监控**: 实时监控物品状态 - **移除检测**: 物品被移除时立即触发报警 ### 使用方法 1. 在主界面找到物品移除检测功能 2. 点击"选择物品"按钮 3. 在视频画面上框选要监控的物品 4. 系统开始监控该物品 5. 物品被移除时会触发语音报警 ## 人脸识别功能说明 ### 功能特点 - **高精度识别**: v3.0版本,使用MediaPipe FaceMesh,90-95%准确率 - **多特征融合**: 几何特征、颜色特征、ORB特征、LBP特征融合 - **人脸对齐**: 使用MediaPipe FaceMesh进行精确人脸对齐 - **光照归一化**: CLAHE光照归一化处理 - **智能降级**: 无模型时自动降级到基础算法 ### 使用方法 1. 在控制面板找到"👤 人脸识别"区域 2. 点击"注册人脸"按钮 3. 拍照或上传图片注册新的人脸 4. 系统会自动识别已注册的人脸 5. 可查看已注册人脸列表,或清空所有人脸 ## 人脸识别日志功能说明 ### 功能特点 - **完整事件记录**: 自动记录所有人脸相关事件(注册、识别、删除、陌生人检测) - **事件分类统计**: 实时显示总事件数、已识别数、陌生人数 - **陌生人检测**: 自动检测并记录未注册的陌生人 - **事件详情**: 显示事件时间、人物名称、置信度、位置信息 - **冷却机制**: 陌生人检测有30秒冷却期,避免重复报警 - **SQLite数据库**: 所有事件持久化存储,可随时查询 ### 事件类型 - ✅ **已识别**: 成功识别已注册的人脸 - 🚨 **陌生人**: 检测到未注册的人脸 - ➕ **已注册**: 新人脸注册成功 - 🗑️ **已删除**: 人脸数据被删除 ### 使用方法 1. 在控制面板找到"📋 人脸识别日志"区域 2. 查看实时统计数据: - 总事件数:所有事件的总数 - 已识别:成功识别的人脸数量 - 陌生人:检测到的陌生人数量 3. 点击"🔄 刷新"按钮查看最新事件列表 4. 点击"🚨 陌生人"按钮仅查看陌生人事件 5. 每个事件显示: - 事件图标和名称 - 事件发生时间 - 识别置信度(如有) ## 车牌识别功能说明 ### 功能特点 - **中国车牌支持**: 支持蓝牌、黄牌、新能源车牌 - **EasyOCR引擎**: 使用EasyOCR进行高精度文字识别 - **格式验证**: 自动验证车牌格式是否正确 - **省份识别**: 自动识别车牌所属省份 - **置信度显示**: 显示识别结果的置信度 ### 使用方法 1. 在控制面板找到"🚗 车牌识别"区域 2. 点击"识别车牌"按钮 3. 选择拍照或上传图片 4. 点击"识别"按钮进行识别 5. 识别结果显示在下方区域 ## 车牌数据库管理功能说明 ### 功能特点 - **三种车牌类型**: 支持白名单、黑名单、普通车牌三种类型 - **车主信息**: 可添加车主姓名和备注信息 - **实时统计**: 显示总车牌数、白名单数、黑名单数 - **车牌列表**: 查看所有已注册车牌,支持删除操作 - **持久化存储**: 使用SQLite数据库,数据永久保存 ### 车牌类型说明 - **白名单**: 可信任车辆,识别时显示绿色标记 - **黑名单**: 禁止通行车辆,识别时显示红色标记并报警 - **普通车牌**: 普通车辆,无特殊标记 ### 使用方法 1. 在控制面板找到"📚 车牌数据库管理"区域 2. 查看实时统计数据: - 总车牌数:所有已注册车牌的总数 - 白名单:白名单车辆数量 - 黑名单:黑名单车辆数量 3. 点击"➕ 注册车牌"按钮 4. 填写车牌信息: - 车牌号码:必填,如"京A12345" - 车主姓名:可选,如"张三" - 车牌类型:选择白名单/黑名单/普通车牌 - 备注信息:可选,如"公司车辆" 5. 点击"注册"按钮完成注册 6. 在车牌列表中可查看所有已注册车牌 7. 点击"删除"按钮可删除指定车牌 ## 车牌识别日志功能说明 ### 功能特点 - **完整事件记录**: 自动记录所有车牌相关事件(识别、注册、删除) - **事件分类统计**: 实时显示总事件数、已识别数、黑名单数 - **黑白名单识别**: 自动识别白名单和黑名单车辆 - **冷却机制**: 同一车牌30秒内只记录一次,避免重复报警 - **事件详情**: 显示事件时间、车牌号码、置信度、省份信息 - **事件过滤**: 支持查看所有事件或仅黑名单事件 ### 事件类型 - ✅ **已识别**: 成功识别普通车牌 - ✅ **白名单**: 识别到白名单车辆 - 🚨 **黑名单**: 识别到黑名单车辆(会触发报警) - ➕ **已注册**: 新车牌注册成功 - 🗑️ **已删除**: 车牌数据被删除 ### 使用方法 1. 在控制面板找到"🚦 车牌识别日志"区域 2. 查看实时统计数据: - 总事件数:所有事件的总数 - 已识别:成功识别的车牌数量 - 黑名单:识别到的黑名单车辆数量 3. 点击"🔄 刷新"按钮查看最新事件列表 4. 点击"🚨 黑名单"按钮仅查看黑名单事件 5. 每个事件显示: - 事件图标和车牌号码 - 事件发生时间 - 识别置信度(如有) ## 图片搜索功能说明 ### 功能特点 - **图片上传**: 上传要搜索的参考图片 - **相似搜索**: 在视频回放中搜索相似画面 - **时间定位**: 快速定位到相似画面出现的时间点 ### 使用方法 1. 进入监控回放页面 2. 点击"图片搜索"按钮 3. 上传参考图片 4. 系统自动搜索并显示匹配结果 5. 点击结果可跳转到对应时间点 ## 文件结构 ``` smart_camera/ ├── web_app.py # Flask Web服务器主程序 ├── camera_controller.py # 摄像头控制核心 ├── behavior_analyzer.py # 行为分析模块 ├── anomaly_detector.py # 异常检测模块 ├── smart_tracker.py # 智能追踪模块 ├── item_removal_detector.py # 物品移除检测模块 ├── face_recognition.py # 人脸识别模块 v3.0 ├── face_recognition_logger.py # 人脸识别日志模块 ├── license_plate_recognizer.py # 车牌识别模块 ├── license_plate_logger.py # 车牌识别日志和管理模块 ├── captcha.py # 验证码生成模块 ├── alarm.py # 声光报警模块 ├── config.py # 配置管理 ├── generate_voice_files.py # 语音文件生成工具 ├── templates/ # Web页面模板 │ ├── index.html # 主界面 - 实时预览 │ ├── login.html # 登录页面 │ ├── monitoring.html # 监控回放 │ ├── files.html # 文件浏览 │ ├── events.html # 事件记录 │ └── timeline.html # 时间线视图 ├── faces/ # 人脸数据和模型 │ ├── face_database.pkl # 人脸数据库 │ ├── face_landmarker.task # MediaPipe FaceMesh模型 │ └── *.tflite # MediaPipe检测模型 ├── face_events.db # 人脸识别事件数据库 ├── plate_events.db # 车牌识别事件数据库 ├── easyocr_models/ # EasyOCR模型文件 │ ├── craft_mlt_25k.pth # 文本检测模型 │ └── english_g2.pth # 英文识别模型 ├── photos/ # 照片存储目录 ├── videos/ # 视频存储目录 ├── thumbnails/ # 视频缩略图 ├── events/ # 事件记录和截图 ├── logs/ # 日志文件 ├── mobile/ # 移动端APP(PWA) ├── test_output/ # 测试输出目录 ├── requirements.txt # 依赖包列表 ├── setup.sh # Linux安装脚本 ├── setup_windows.bat # Windows安装脚本 └── README.md # 项目说明文档 ``` ## 系统架构 ``` ┌─────────────────────────────────────────────────────────┐ │ Web 浏览器 │ │ (登录、实时预览、控制、回放、搜索) │ └────────────────────┬────────────────────────────────────┘ │ HTTP/WebSocket ▼ ┌─────────────────────────────────────────────────────────┐ │ Flask Web 服务器 (web_app.py) │ │ - 路由管理 - 会话控制 - API接口 - 验证码验证 │ └────────────────────┬────────────────────────────────────┘ │ ┌───────────┼───────────┐ ▼ ▼ ▼ ┌──────────────┐ ┌──────────┐ ┌──────────────┐ │ 摄像头控制 │ │ 智能分析 │ │ 报警系统 │ │ (camera) │ │ 模块 │ │ (alarm) │ └──────────────┘ └──────────┘ └──────────────┘ │ │ │ └───────────────┼──────────────┘ ▼ ┌──────────┐ │ 数据存储 │ │ (SQLite) │ └──────────┘ ``` ## 注意事项 - 首次运行时会自动下载YOLOv8模型(约5MB) - 首次使用人脸识别时会自动下载MediaPipe模型 - 首次使用车牌识别时会自动下载EasyOCR模型到 `easyocr_models/` 目录 - 所有处理在本地进行,保护隐私 - 摄像头权限需要手动授权 - Windows用户可能需要安装Visual C++ Redistributable - 语音文件首次使用时会自动生成 - 系统默认仅支持本地访问,如需远程访问需修改配置 - EasyOCR模型存储在项目目录的 `easyocr_models/` 文件夹中 ## 故障排除 **Windows常见问题**: - 如果遇到DLL错误,请安装Visual C++ Redistributable - 摄像头无法访问时,请检查Windows隐私设置 - 语音报警不工作时,检查系统音量设置 - EasyOCR模型损坏时,删除 `easyocr_models/` 目录下的文件重新下载 **Linux常见问题**: - 权限问题:`sudo usermod -a -G video $USER` - 缺少依赖:运行安装脚本或手动安装OpenCV - 摄像头权限:确保用户有访问/dev/video设备的权限 **人脸识别问题**: - MediaPipe模型缺失时会自动降级到基础算法 - 人脸对齐失败时会使用原始图像进行识别 - 确保人脸图片光线充足、清晰可见 **车牌识别问题**: - 确保车牌图片清晰、光线充足 - 支持中国车牌格式(蓝牌、黄牌、新能源) - EasyOCR模型下载失败时,检查网络连接 ## 功能实现状态 ### ✅ 已实现功能 - Web管理界面 - 实时视频流预览 - 用户登录与验证码保护 - 行为分析(跌倒、打架、人群) - 异常检测(烟雾、火焰) - 声光报警与语音报警 - 智能追踪(自动跟随目标) - 区域入侵检测 - 物品移除检测 - 事件回放功能 - 图片搜索功能 - 视频清理功能 - 本地访问限制 - 详细调试日志 - 人脸识别 v3.0 (MediaPipe FaceMesh, 90-95%准确率) - 车牌识别 (支持中国车牌) - 人脸数据库管理 - 车牌识别Web界面 - EasyOCR模型本地存储 ## 技术栈 - **后端框架**: Flask - **计算机视觉**: OpenCV, YOLOv8, MediaPipe - **目标追踪**: OpenCV CSRT - **人脸识别**: MediaPipe FaceMesh, 多特征融合 - **车牌识别**: EasyOCR - **语音合成**: pyttsx3 (Windows), eSpeak (Linux) - **数据库**: SQLite - **前端**: HTML5, CSS3, JavaScript - **验证码**: 自定义数学计算式验证码 - **OCR引擎**: EasyOCR ## 许可证 本项目仅供学习和研究使用。 ## 更新日志 ### v3.1 (最新) - 优化车牌识别模块,添加EasyOCR模型本地存储 - 修复Pillow库兼容性问题(Image.ANTIALIAS → cv2.INTER_CUBIC) - 优化Web界面布局,调整"温馨提示"位置 - 完善车牌识别UI组件 - 添加车牌识别结果显示功能 - 添加EasyOCR模型下载管理 ### v3.0 - 新增人脸识别 v3.0 (MediaPipe FaceMesh, 90-95%准确率) - 新增四特征融合人脸识别算法 (几何+颜色+ORB+LBP) - 新增智能降级机制 (无模型时自动降级) - 新增车牌识别功能 (支持中国车牌: 蓝牌/黄牌/新能源) - 新增人脸数据库管理 - 新增详细的使用文档和评估报告 ### v2.0 - 新增用户登录与验证码保护 - 新增区域入侵检测功能 - 新增物品移除检测功能 - 新增图片搜索功能 - 新增语音报警系统 - 新增详细调试日志 - 优化本地访问安全 - 完善事件记录系统 ### v1.0 - 基础Web界面 - 实时视频预览 - 拍照和录像功能 - 行为分析 - 异常检测 - 声光报警 - 智能追踪 - 监控回放