一、选题简介

1.选题名称

  • 生人报警

2.选题原因

  • 首先是通过这两次实验,我们对利用OpenCV进行人脸识别有一定的知识了解和技术掌握

  • 其次,生人报警是人脸识别的一项重要用途,在生活中的许多方面都有涉及到。该项目通过摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸, 进而对检测到的人脸视觉特征信息进行身份鉴别,可对异常人员及陌生人徘徊逗留识别报警。

3.预期功能

  • 遇到“生人”(未知人员)徘徊逗留进行报警
  • 记录“熟人”(认证人员)访问时间
  • 通过网页直播监控画面

二、设计,重点说明系统部署所使用的容器

1.工作流程

image.png

2.整体部署

image.png

3.具体布置

(1)树莓派
  • 容器

image.png

(2)服务器
  • 容器

image.png

  • 数据库

image.png
image.png
image.png

  • rtml实现代码
  • docker-compose.yml
version: "3"
services:
        rtmp:
                build: ./rtmp
                ports:
                        - "1935:1935"
                        - "8080:80"
                volumes:
                        - /home/pi/docker1/rtmp/conf/nginx.conf:/opt/nginx/nginx.conf
                        - /usr/local/python3/lib/python3.7/site-packages/django/bin/Home_surveillance/static:/www/static
        mysql:
                build: ./mysql
                ports:
                        - "3306:3306"
                volumes:
                        - /home/pi/docker1/mysql/data/:/var/lib/mysql/
                environment:
                        MYSQL_ROOT_PASSWORD : 123456

  • rtmp/Dockerfile
FROM jun3/rtmp
RUN apt-get update && apt-get install -y vim
  • mysql/Dockerfile
FROM mysql:5.7
# allow no password
ENV MYSQL_ALLOW_EMPTY_PASSWORD no

三、运行结果,展示容器启动后,程序的运行结果

image.png

四、最终的组内分工+贡献比

学号 名称 任务 贡献比
031702623 蔡嘉懿 搭建树莓派环境,部署树莓派镜像以及树莓派上python代码的编写 17%
031702627 李志恒 nginx服务器等的设置以及django后端的大部分内容 22%
031702632 林华伟 搭建树莓派环境,部署树莓派镜像以及树莓派上python代码的编写 17%
031702606 余琳玲 搭建了docker环境、设计mysql数据库的以及部分网页的设计 17%
111700306 陈佳雯 制作PPT、搭建了docker环境、设计mysql数据库以及部分网页的设计 17%
031702616 林涛 编写博客、配置服务器端环境以及部分网页的的设计 10%

五、总结(组员分别撰写,统一提交)

  • 蔡嘉懿:

作为组长,在本次实验中我选择了项目内容,对任务进行分工,在具体实验中我负责树莓派的配置和相关代码的编写。在实验过程中,我们遇到了一些困难,绕了一些远路,做了些无用功,但从这些经验教训中,我们找到了正确的路,并成功完成了项目,当然这也少不了我的组员们的配合。总之,通过这次实验,我收获了许多。

  • 李志恒:

在本次实验中我主要负责了django架构的部署和后端代码的编写,首先是将django和nginx连接起来,然后是django和mysql连接起来。刚开始的时候我们的项目整体部署在树莓派上,遇到的问题就是树莓派的arm架构不支持mysql,后面好不容易弄到了arm上的mysql镜像,结果版本不够,django3.0至少需要mysql5.7,所以又换了个镜像。结果最后换到了服务器上面部署......感觉这些活都白干了,然后又遇到了nginx和uwsgi沟通的问题,还有静态资源定位的问题,花了好长时间一个个解决这些问题。最后终于把应用部署到了服务器上面,感觉终于有一点产品的感觉了,虽然网站很简陋.......但是感觉还是可以的.......

  • 林华伟:

这次基于树莓派的人脸识别监控实现过程中,我参与了后端的部署,通过架构云服务器和树莓派来部署web应用,实现了树莓派将视频等数据推流到云服务器上,用户再通过前端界面拉流查看直播监控界面。我们后端采用了nginx加rtmp模块的服务器以及python的管道部署实现了较低的直播延迟(大约只有一两秒,几乎无感),给予用户良好的直播观看体验。

  • 余琳玲:

微服务的特点是可以将应用分解为多个部分,使得每一个微服务专注于一个功能,这样方便分工的同时也加大了一些工作量。在部署docker环境和写前端界面的时候遇到了不少问题,在这个过程中学习到uwsgi服务器本身是内网接口,通过nginx被浏览器访问到,用django或是uwsgi这种东西来负责静态文件的处理有点浪费资源,所以整个静态文件的处理都直接有nginx完成,微服务的关键是隔离和划分各个服务。

  • 陈佳雯:

这门课磨了这么久终于了结束了!!不过,磨人的同时也确实收获了很多以前完全没了解过的知识。在这次大作业当中,更加深了微服务的了解。特别是nginx的conf配置吧...在这次大作业中,踩了不少坑。还学习了nginx的静态资源服务,才发现自己只了解了微服务的冰山一角啊。整个项目都是用python来写的,对flask框架搭建和视频在web端的传输有了初步的认识。不得不说,python的好多库都太香了...

  • 林涛:

这次的大作业全靠大佬带,因为本人Python不怎么会(其实什么都不会),所以这次作业就只能做些简单的工作,比如写博客,配置树莓派、服务器,帮忙写网页等,但从这门课还是学会了许多新知识,比如容器的创建、镜像的部署以及树莓派的使用等。