基于Python的智能监控平台
1.环境配置
网站使用了 Flask 框架,安装 Flask :
pip install Flask
Flask 连接 mysql 数据库需要库 flask_sqlalchemy 和库 pymysql ,安装:
pip install flask_sqlalchemy
pip install pymysql
试图建立 Websocket 连接,需要库 flask_socketio ,安装:
pip install flask_socketio1
图像处理需要库 opencv 和 pillow ,安装:
pip install opencv-python
pip install pillow
图像分析使用了 tensorflow 的 object_detection ,官网链接: https://github.com/tensorflow/models/tree/master/research/object_detection
安装过程:
pip install tensorflow
pip install --user Cython
pip install --user contextlib2
pip install --user pillow
pip install --user lxml
pip install --user jupyter
pip install --user matplotlib
然后下载 tensorflow 模型:
模型官网:https://github.com/tensorflow/models
执行命令:
git clone https://github.com/tensorflow/models
或者
wget https://github.com/tensorflow/models
即可完成下载,得到一个 models 文件夹,将刚才下载的 models 文件夹移动到刚刚安装的 tensorflow 的文件夹中。
可以通过如下方法获知 tensorflow 的安装文件夹,在通过 pip 安装完成后,再次运行 pip install tensorflow ,命令行会显示已经安装,并显示 tensorflow 所在的路径。
之后安装 tensorflow 需要的 COCO API :
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
make
cp -r pycocotools <tensorflow文件夹的路径>/models/research/
在 tensorflow/models/research 文件夹下进行 Protobuf 编译:
```
From tensorflow/models/research/ protoc object_detection/protos/*.proto --python_out=.
```
设置环境变量,在 tensorflow/models/research 文件夹下运行:
```
From tensorflow/models/research/ export PYTHONPATH=$PYTHONPATH:
pwd
:
pwd
/slim
```
tensoflow object detection 安装完成!可以通过以下命令测试是否安装成功:
python object_detection/builders/model_builder_test.py
然后,打开项目文件夹中的 camera.py 和 od.py ,将文件中的 TENSORFLOW_DIR 修改为当前的 tensorflow所在路径。至此,所有环境配置完成,还需要初始化数据库。
打开 mysql ,建立一个名为 2018Python 的数据库:
create database 2018Python;
use 2018Python;
在 2018Python 数据库中添加名为 user 和 rootuser 两个表,分别代表普通用户数据库和管理员数据库:
``` create table user ( username char(20) primary_key, password char(20) not null );
create table rootuser ( username char(20) primary_key, password char(20) not null ); ```
之后向管理员数据库 rootuser 添加一个管理员:
sql
insert into rootuser values('root','1234');
以后也通过类似的方式添加管理员,然后在网页上通过管理员添加普通用户。
至此,所有初期准备工作完成。
(PS:以上所有配置在Mac OS下可以使程序成功运行)
2.文件结构介绍
-
templates 文件夹中是网页模版
-
static 文件夹中是一些静态文件js和css文件
-
res 文件夹中是 object detection 需要的训练好的模型和标签和其他的资源文件
-
output 文件夹中放置的是 object detection 分析的结果
-
camera.py 是摄像机行为和图像处理的文件
-
od.py 是物体检测的具体实现
-
tmo.py 是追踪动态物体的具体实现
-
app.py 是程序入口,运行:
python app.py
然后进⼊入 127.0.0.1:5000 即可运行程序。
3.功能介绍
登陆使用了 mysql + cookies 实现,分为普通用户和管理员。
登陆以后进入功能管理页面,在该页面普通用户和管理员可以选择相应的功能,并可以选择注销。
特别的,管理员可以查看普通用户并删除。
修改密码,修改成功或者失败都会有网页提示。
管理员添加用户。
管理用户。
读取摄像头,应该支持RTSP协议的网络摄像头,在 camera.py 中的函数 init_camera 中可以修改摄像头参数(我在网上找了一个 rtsp流的视频是可以播放的,实验室的摄像头连接好像有点问题,在camera.py 文件中可以修改,目前是默认系统摄像头)。
前端显示视频通过 M-JPEG 格式的流媒体实现。
视频分析有两部分,第一部分是 tensorflow 的物体检测,第二部分是动态物体追踪。在功能选择网页上可以打开原视频流和实时捕捉动态物体,无论打开哪一个网页,都会创建一个新的 进程在后台进行物体检测,物体检测每一帧处理需要一定的时间,当处理完一帧后再传入下一帧处理,处理完后的结果存储在 output 文件夹中,图片以时间命名。如果打开实时捕捉动态物体网页,则会进行动态物体追踪,该功能逐帧分析并且及时显示在网页上,刚打开的时候需要先拍摄背景帧,因此设置延迟3秒的延迟时间(背景帧意思是拍摄一帧图片,该图片上尽可能不包含移动的物体,方便后计算),在运行的过程中,可以随时调整该功能的相关参数值并重新设置背景帧。(在此说明,高斯模糊值越大,细节就会被去掉;亮度阈值越大,和背景颜色比较相似的物体就越不容易被检测出来)
object detection 检测效果示例:(忽略我的脸)
动态追踪物体 效果示例:
比较占CPU的 object detection 在另一个进程运行,可以充分利用多核CPU的性能,并且保证了在分析时网页播放视频时不会卡顿。
报警功能,本来想通过 object detection 实现当画面中出现特定物品就报警的功能,然后将报警信息存入数据库。数据库和物品检测的接口已经写好了,在 app.py 和 od.py 中的可以查看到。但是 Flask 的 websocket 的用法和 Flask 网站响应很玄学,导致python主动推送的功能实现不了,就暂时割了这个功能。
参考文献
- 基于.Net的货运列车智能监控管理平台设计与实现(南京大学·罗海伟)
- 监所管理信息系统的设计与实现(电子科技大学·夏超)
- 基于多数据源以及业务流程分析的数据监控平台的设计与实现(北京邮电大学·吕云霄)
- 基于嵌入式服务器的网络视频监控系统的设计与实现(电子科技大学·谢凯)
- 基于物联网智慧农业信息平台建设精准监测与智能控制系统的研究(曲阜师范大学·张越杰)
- 基于SSH框架的网络集成化楼宇视频监控平台的设计与实现(东华理工大学·周翔)
- 基于Zabbix的云监控系统的设计与实现(北京交通大学·徐慧)
- 电视台节目播出后台监视系统的设计与实现(电子科技大学·钟声)
- 基于J2EE架构的MPS移动定位系统中跟踪监控子系统的研究与应用(电子科技大学·刘明皋)
- 实时视频监控系统的设计与实现(西安电子科技大学·索郎邓珠)
- 基于云平台的智能家居生态与安防系统设计与研究(贵州大学·王伟)
- 基于多数据源以及业务流程分析的数据监控平台的设计与实现(北京邮电大学·吕云霄)
- 基于B/S架构视频监控管理平台的应用研究(中山大学·罗湘文)
- 基于嵌入式服务器的网络视频监控系统的设计与实现(电子科技大学·谢凯)
- 基于微服务的AI中台系统设计与实现(北京邮电大学·陈开)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设货栈 ,原文地址:https://m.bishedaima.com/yuanma/35452.html