python智能控制系统_课内资源 - 基于Python的智能监控平台

1.环境配置

网站使用了 Flask 框架,安装 Flask :

pip installFlask

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

安装过程:

pip install tensorflow

pip install--userCython

pip install--user contextlib2

pip install--user pillow

pip install--user lxml

pip install--user jupyter

pip install--user matplotlib

然后下载 tensorflow 模型:

执行命令:

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/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 database2018Python;

use2018Python;

在 2018Python 数据库中添加名为 user 和 rootuser 两个表,分别代表普通用户数据库和管理员数据库:

create table user(

usernamechar(20)primary_key,

passwordchar(20)notnull

);

create table rootuser(

usernamechar(20)primary_key,

passwordchar(20)notnull

);

之后向管理员数据库 rootuser 添加一个管理员:

insertintorootuser 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主动推送的功能实现不了,就暂时割了这个功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值