sovarares/Smart-CCTV

GitHub: sovarares/Smart-CCTV

基于 Python 和 OpenCV 的本地智能监控系统,集成实时移动侦测、音视频录制、邮件告警与 LSB 隐写证据防篡改验证。

Stars: 0 | Forks: 0

# 智能 CCTV 一个基于 Python 的智能监控原型系统,它结合了实时移动侦测、实时 MJPEG 流媒体传输、音视频同步录制、电子邮件警报,以及用于防篡改视觉证据的 LSB 隐写术。 ## 概述 Smart CCTV 是一个轻量级的监控系统,旨在本地运行,无需专用的 GPU 或云处理服务。该应用程序分析连续的摄像头帧,检测显著的移动,记录事件,发送电子邮件警报,并存储包含隐藏安全代码的受保护 PNG 证据图像。 该项目专注于三个主要领域: - 实时多媒体处理; - 本地边缘计算监控; - 通过 LSB 隐写术进行证据完整性验证。 ## 主要功能 - 使用 OpenCV 进行实时网络摄像头监控 - 通过帧差分和轮廓分析进行移动侦测 - 高斯滤波、阈值化和形态学膨胀 - 检测到移动时自动录制音频和视频 - 将同步的 A/V 导出为 MP4 - 通过本地 Flask Web 界面进行实时 MJPEG 流媒体传输 - 包含受保护 PNG 证据图像的电子邮件警报 - 使用 LSB 隐写术嵌入警报 ID 和时间戳 - 用于提取和验证隐藏代码的独立工具 - 多线程架构,实现非阻塞式捕获、警报、音频和多路复用 - 等待媒体处理完成的受控关机机制 ## 工作原理 1. 应用程序捕获连续的两帧视频画面。 2. 它们的绝对差值被转换为灰度图。 3. 高斯模糊用于减少摄像头噪声。 4. 阈值化和膨胀操作用于隔离相关的移动区域。 5. 小于配置的最小面积的轮廓将被忽略。 6. 当检测到移动时: - 开始音频和视频录制; - 将第一个证据帧保存为 PNG; - 使用 LSB 隐写术将安全字符串嵌入图像中; - 异步发送电子邮件警报。 7. 在没有移动并经过配置的宽限期后,录制停止。 8. MoviePy 将临时的音频和视频文件合并为最终的 MP4。 9. `verifica_stegano.py` 可以从 PNG 证据中提取隐藏的安全代码。 ## 技术栈 - **Python** - **OpenCV** — 视频捕获和图像处理 - **Flask** — 本地 Web 界面和 MJPEG 流媒体传输 - **NumPy** — 矩阵和位级操作 - **SoundDevice** — 音频捕获 - **SciPy** — WAV 文件生成 - **MoviePy / FFmpeg** — 音视频同步和 MP4 导出 - **SMTP / MIME** — 电子邮件警报 - **Threading** — 并发处理 ## 项目结构 ``` Smart-CCTV/ ├── SmartCCTV.py # Main surveillance application ├── verifica_stegano.py # LSB evidence verification utility ├── Documentatie.docx # Technical documentation ├── Prezentare CCTV.pptx # Project presentation ├── folder_video/ # Generated recordings └── folder_stegano/ # Protected PNG evidence images ``` 输出文件夹将在应用程序启动时自动创建。 ## 环境要求 - Python 3.8 或更高版本 - 网络摄像头 - 麦克风 - 用于发送电子邮件警报的网络连接 - MoviePy 的 FFmpeg 支持 ## 安装说明 克隆仓库: ``` git clone https://github.com/sovarares/Smart-CCTV.git cd Smart-CCTV ``` 创建并激活虚拟环境: ``` python -m venv .venv ``` Windows: ``` .venv\Scripts\activate ``` Linux/macOS: ``` source .venv/bin/activate ``` 安装依赖项: ``` pip install opencv-python numpy sounddevice scipy Flask moviepy==1.0.3 imageio-ffmpeg ``` ## 电子邮件配置 **不要在源代码中直接存储电子邮件密码。** 更新 `SmartCCTV.py` 以从环境变量中读取配置: ``` EMAIL_SENDER = os.getenv("EMAIL_SENDER") EMAIL_PASSWORD = os.getenv("EMAIL_PASSWORD") EMAIL_RECEIVER = os.getenv("EMAIL_RECEIVER") Set the variables before running the project. ``` Windows PowerShell: ``` $env:EMAIL_SENDER="sender@gmail.com" $env:EMAIL_PASSWORD="your-app-password" $env:EMAIL_RECEIVER="receiver@example.com" ``` Linux/macOS: ``` export EMAIL_SENDER="sender@gmail.com" export EMAIL_PASSWORD="your-app-password" export EMAIL_RECEIVER="receiver@example.com" ``` 请使用应用专用密码,而不是主账户密码。 ## 运行应用程序 ``` python SmartCCTV.py ``` 在浏览器中打开本地界面: ``` http://127.0.0.1:5000 ``` 要从连接到同一本地网络的其他设备进行访问: ``` http://:5000 ``` 使用 **OPREȘTE CAMERA** 按钮可安全停止系统,并允许所有正在活动的媒体处理线程完成工作。 ## 生成的文件 ### 视频录制 最终录制内容存储在: ``` folder_video/alertaN_COMPLET.mp4 ``` 每个最终文件都包含同步的视频和音频。 ### 受保护的证据图像 证据图像存储在: ``` folder_stegano/dovada_alertaN.png ``` 该图像包含类似以下的隐藏代码: ``` SECURED_alertaN_HHMMSS ``` 由于证据存储为无损 PNG 格式,编辑或有损重新压缩可能会破坏嵌入的信息,从而表明文件已被篡改。 ## 验证证据完整性 将证据图像放入 `folder_stegano`,然后运行: ``` python verifica_stegano.py ``` 该实用程序会扫描所有匹配以下格式的文件: ``` folder_stegano/dovada_*.png ``` 有效的图像将提取出安全代码。被修改或不受支持的图像可能会导致解码过程失败。 ## 作者 **Șova Ioan-Rareș** 自动控制与计算机学院 POLITEHNICA Bucharest 科学指导:**Conf. dr. ing. Ștefan Mocanu**
标签:Python, 图像处理, 数据隐写, 无后门, 视频监控, 边缘计算, 运动检测, 逆向工具, 音频视频同步