0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用Xmind思维打造智能监控系统

单片机爱好者 2018-01-10 06:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

想出去玩,找不到人。玩个lol(已卸载),老是坑人。实在是无聊至极,不过,就在前天,隔壁邻居家的房子被租出去了。因为我是农村的,房子都是独立的带院子的,没错就是这样的:

因为家里经常没人住,并且还放有其他贵重物品,生怕一不留神,这些租户跳到我家。把这些东西洗劫一空。此时我已经安耐不住内心的小激动!那么。搭建一个智能监控系统可好!

2:新闻报道

2017年7月13日讯,家庭摄像头遭入侵,公民隐私被侵犯的案子,已经破了。今天傍晚,市公安局发布消息称,19天内,北京警方成功打掉了全国首例网上传播家庭摄像头破解软件的犯罪链条,抓获涉案人员24名。————–2017-07-13 18:56 编辑:TF003 来源:北京晚报

这些人的脑袋都秀逗了吧,这都能干出来,吓得我赶紧自己搭建了一个智能监控系统。

3:外快

挣点外快!

0×01:Xmind思维

先大概叙述一下MS的功能,

1:硬件部分

  1. 两个USB高清摄像头,

  2. 一个超声波传感器(HC-SR04),

  3. 一个树莓派3 modelB,

  4. 散热扇(很重要!)

对于超声波传感器,主要的功能就是检查距离的变化,也就是说当检测是有运动物体的产生,才会激活摄像头。

1:也是为了减轻树莓派CPU负荷

2:合理利用那可怜的32G内存卡,

对于两个摄像头,一个放置在家门口的过道里,每当来人的时候,超声波传感器变化检测到运动物体,这时会激活摄像头便会捕捉一系列图片,让系统进行分析,包括面部,身体等信息,所以,这个摄像头要求拍摄的质量和角度要很好,另一个摄像头这放置在院子的边角,要求能照到整个院子,这个摄像头主要任务就是检测人体,并不强求识别出人脸,毕竟距离太远。

对于树莓派,做个监控系统的话,不能一直把电脑放在上面吧,那样太浪费资源了,所以当时狠心的买了个3B,不过还好用起来不错,他的角色就是处理硬件传回来的各种信息。。。

2:代码部分

下面慢慢道来!

0×02:环境搭建

curl安装:

sudo apt-get install curl

MySQLdb安装:

sudo apt get install python-pip

sudo apt-get install libmysqlclient-dev

pip install mysql-python

LAMP:

sudo apt-get install apache2

sudo apt-get install php7.0

sudo apt-get install libapache2-mod-php7.0

sudo apt-get install mysql-server

sudo apt-get install phpmyadmin

sudo chmod 777 /var/www/html/

sudo ln -s /usr/share/phpmyadmin /var/www/html/

sudo sed -i 's/;extension=php_mbstring.dll/extension=php_mbstring.dll/' /etc/php/7.0/apache2/php.ini

sudo /etc/init.d/apache2 restart

mysql --user=root -p

CREATE DATABASE IF NOT EXISTS `MS` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

USE `MS`;

CREATE TABLE `None` (`None` int(11) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;

OpenCV:

sudo apt-get install build-essential

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

git clone https://github.com/0x024/opencv.git

cd ~/opencv

mkdir release

cd release

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

make -j1

sudo make install

0×03: 目录树

0×04:代码分析

1:MS.py(monitor system的简称)

总体文件函数的分布!

checkdist()

首先来了解一下HC-SR04超声波传感器

  1. 采用IO口TRIG触发测距,给至少10us的高电平信号;

  2. 模块自动发送8个40khz的方波,自动检测是否有信号返回;

  3. 有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2

引脚与树莓派连接方式:

  1. VCC,超声波模块电源脚,接5V电源即可

  2. Trig,超声波发送脚,高电平时发送出40KHZ出超声波

  3. Echo,超声波接收检测脚,当接收到返回的超声波时,输出高电平

  4. GND,超声波模块GND

这里附上树莓派串口的原理图!方便自定义连接

这里我将VCC连接至 Pin#02,将Gnd连接至Pin#06,将Trig连接至Pin#03,将Echo连接至Pin#05

因为之前设置成了GPIO.setmode(GPIO.BCM),所以在写的时候都要写成Name那一列,Pin#只是指示作用!

这里我自定义了一个index。默认的值就是传感器在无运动物体下所稳定的int值,这个需要根据传感器摆放位置自行设定。

初始化时将trig和echo端口都置低,首先向给 trig 发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波),然后等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时器开始计时,再次等待捕捉echo的下降沿,当捕捉到下降沿,读出计时器的时间,这就是超声波在空气中运行的时间,按照 测试距离=(高电平时间*声速(340M/S))/2 就可以算出超声波到障碍物的距离。

接着,当distance发生明显的变化时候,可以认定,有运动物体的产生。这时候,就会调用下一下函数camrun()

camrun()

可能会觉得上图函数有点多余,其实不然,图示的这种是适合于小区的只有一个门口的家庭,想想也对,

当使用两个摄像头的时候,就会用到如图的函数,这里用到了最简单的多线程thread,(PS:本人能力有限,暂时还没法理解threading这个自定义的多线程方法,),可以在运行cam()的时候,使得cam(0),和cam(1)的基本同时运行

cam(i)

这个函数的主要功能就是图像的运动检测,当有运动物体时,便会将图片以“%Y%m%d%H%M%S’+’_’+str(0)”的格式记录下来,有时候可能存在两个摄像头同时工作记录,导致记录下来的图片日期一样,为了避免这个Error产生,在日期的后面加上了摄像头“i”的标识,用来进行分辨!

这里采用时间来控制camera.release(),当运行的时间==10s时候,便会退出cam(i),这个时间基本要和camrun()里的time.sleep()相同。

这里也做了一个异常处理。避免了因为摄像头没有插好,或这因为前一个运行的cam()还没有结束释放导致的camera busy等而造成运行中断!

checkcycle()

这个函数就是写了一个无限循环,可以让getfilename()无限运行,对新增的图像文件及时的进行检测

testfacepp()

这个函数主要用来检测访问face++的服务器是否受到了 CONCURRENCY_LIMIT_EXCEEDED —并发限制,也就是说,因为我们是免费用户,虽然可以使用他的全部API ,但是,当他们的服务器达到高负荷时候,要首先供付费用户的平稳使用,当负荷不大时候,我们才可以畅快的使用。还好吧!

getfilename()

这个函数就是检测新图片的产生,首先,打开piclist.log文件,当没有受到并发限制的时候,然后再去运用os,walk函数去遍历”./img/shutter/”目录,这里要保证读取时间的先后顺序和写入.log的先后顺序同步,就不详细说了。

当检测到的为事先预定“9999999999999”文件时候,就是表明这是所有文件都以写入piclist.log并已检测完毕,

当所检测的文件不在piclist.log的时候,便会调用checkbody(),来进行身体的检测,

checkbody()

之所以先检测身体,只有在有身体的情况下,才会有面部,可以减小服务器的负荷,

首先,读取照片,然后传入BodyAPI,进行Body的检测。当不存在身体时候,将文件写入piclist.log。进行下一个文件的检测

当存在Body的时候,会将图片中的每个Body都抠出来,然后分别放在”./img/done/”里面,进行下一步的面部识别,。

这里又对checkface_online()进行了一个并发限制的异常处理,因为实在没法确定下一秒是否会并发限制,为了防止程序异常终端,所以在每次调用faceAPI的时候都要异常处理一下,目前BodyAPI并不会发生并发限制

detailface()

这个就是在运行faceAPI的时候。将返回来的face_token与数据路中的人脸进行比对,并返回该面部所对对应的ID,namem,gender等信息

checkface_online()

面部识别这一块有点长,不过也很简单!

首先读取”./img/done/”下的文件,然后将其传给FaceAPI()进行面部分析,如果result_d[“faces”]==0,着表明只存在身体并未检测到人脸,判定为stranger!写入Piclist.log,进行下一张图像的检测,当result_d[“faces”]>0 时,才可以将面部返回的face_tokrn与之前导入的face_token进行比对,同理,当返回的len(result_s)==3及表明数据库中并没有该人脸,判定为 stranger!,写入Piclist.log。当len(result_s)>3时候,同时confidence >= 80.00才可以判定这个人是谁,否者都别判定为陌生人!

if __name__ == ‘__main__’:

这里就是要运行的方式

python MS.py check

这是就会开启图片检测的功能。

python MS.py camera

这是就会开图像截取的功能

2:BodyAPI,FaceAPI,import.py

PS:这些就详细说了,因为之前发表过一篇文章,大家可以去参考

0×05:运行

代码fork github.com/0x024/MS官方博客 0x024.com
运行前,

	需要将./facepp/FaceAPI.py和BodyAPI.py中的api_key和api_secret换成你的
	(为了便于您测试,我以将我的key放在里面,为了防止多人使用冲突,希望您后期换成个人的)
	需要将./facepp/Dbconnect.py中的数据库信息换成自己的
    (在搭建环境过程中,建议密码全部设置成ubuntu,方便记忆)
python import.py #将./data/master/目录下的图片特导入数据库
python MS.py camera  #运行图像捕捉
python MS.py check  #运行图像检测

0×06:其他

1:对于想用电脑进行代码测试的,我也将代码整理好放MS-PC文件里面。大概运行方式和在树莓派上的差不多,只是少了超声波传感器这一环节!可自行调试。

2:对于环境搭建的问题,可以参考我先前的文章,实在不会的可在我的博客里面留言,我会及时的回复,

3:对于想二次开发的。比如加上web服务器可以远程查看,加上通讯模块及时进行数据反馈等等,最重要的就是有大脑风暴!

3:Good Luck

0×07:总结

穿着内衣坐在电脑前,直到凌晨,一如既往;

情愿坐在电脑前吃方便面,也不愿出去约会;

能够修好任何东西;

打字比你思考还快;

比和人们在一起花更多的时间上网;

不能理解为什么有些人不能从头到尾装起一台完整的电脑来;

不相信有图形的WEB浏览——lynx始终是最好的选择,也是唯一的需要;

使用文本编辑器——而不是文字处理软件——来回所有的信件;

从不,决不,绝对不穿西装;

相信只有Sucker才付费——免费网络连接,自由软件,用IP打电话

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 摄像头
    +关注

    关注

    61

    文章

    5114

    浏览量

    103473
  • 智能监控
    +关注

    关注

    5

    文章

    277

    浏览量

    33142
  • 树莓派
    +关注

    关注

    122

    文章

    2081

    浏览量

    110753

原文标题:看我如何基于Python&Facepp打造智能监控系统

文章出处:【微信号:gh_dae0718828df,微信公众号:gh_dae0718828df】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    机房环境监控系统与动环监控系统包括哪些?

    智慧动环监控系统、物联网智能动环监控系统、物联网动环智能监控
    的头像 发表于 03-31 08:11 167次阅读
    机房环境<b class='flag-5'>监控</b><b class='flag-5'>系统</b>与动环<b class='flag-5'>监控</b><b class='flag-5'>系统</b>包括哪些?

    2026工业远程控制设备:宏集IXON打造PLC远程监控智能管理新标杆

    宏集 IXON 工业 IoT 解决方案深耕机械制造领域,以 “强大却不复杂” 的产品体系,为全球 2500 + 机械制造商打造了从 PLC 远程监控智能远程管理的全链路解决方案,成为工业远程控制领域的优选品牌。
    的头像 发表于 02-14 16:47 9047次阅读
    2026工业远程控制设备:宏集IXON<b class='flag-5'>打造</b>PLC远程<b class='flag-5'>监控</b>与<b class='flag-5'>智能</b>管理新标杆

    智能热网监控系统:驱动供热行业数字化转型的核心引擎

    融入整体解决方案,打造适配行业需求的智慧热网管理体系。 1.搭建供热全链条数字化管控底座 智能热网监控系统以“感知数字化、调控智能化、运维精
    的头像 发表于 01-29 09:17 276次阅读
    <b class='flag-5'>智能</b>热网<b class='flag-5'>监控</b><b class='flag-5'>系统</b>:驱动供热行业数字化转型的核心引擎

    智能防雷预警检测监控系统行业部署方案

    智能防雷预警检测监控系统 是一套集雷电环境监测、雷电风险评估、设备运行监控及预警发布于一体的综合性防雷体系,广泛应用于电力、通信、轨道交通、石化、建筑、大数据中心等行业。其核心目标是实
    的头像 发表于 11-20 11:35 397次阅读
    <b class='flag-5'>智能</b>防雷预警检测<b class='flag-5'>监控</b><b class='flag-5'>系统</b>行业部署方案

    智能燃气监控系统的核心能力是什么

    在燃气输送、存储及使用的全流程中,智能燃气监控系统发挥着关键作用,其精准监测与快速响应的核心能力,有效化解传统监控模式的滞后性难题,为燃气安全管理提供全方位技术支撑。无论是工业生产场景
    的头像 发表于 11-03 09:10 504次阅读
    <b class='flag-5'>智能</b>燃气<b class='flag-5'>监控</b><b class='flag-5'>系统</b>的核心能力是什么

    电力监控系统如何在智能变电站使用?

    总述 随着技术的发展,许多的国家正在实施智能电站管理的电力能源监控系统。升级传统变电站已成为许多公用事业不可或缺的选择,而更新后的设备也达到了智能变电站的管理水平。此外,电力
    的头像 发表于 10-10 16:50 703次阅读
    电力<b class='flag-5'>监控</b><b class='flag-5'>系统</b>如何在<b class='flag-5'>智能</b>变电站使用?

    虹科方案 | 数据不缺位,监控不滞后:虹科车辆信息远程监控系统

    引言在智能网联与电动化推进中,车队管理、远程诊断和智能驾驶常被这些问题困扰:多车型数据采集要反复适配、网络波动时数据丢了难追溯、原始数据看不懂没法...虹科车辆信息远程监控
    的头像 发表于 09-18 17:33 1008次阅读
    虹科方案 | 数据不缺位,<b class='flag-5'>监控</b>不滞后:虹科车辆信息远程<b class='flag-5'>监控</b><b class='flag-5'>系统</b>

    电力监控系统的应用场景,沃思智能

    电力监控系统作为保障电力生产、传输、分配和使用全流程安全、高效、经济运行的核心技术手段,其应用场景覆盖了电力系统从 “发 - 输 - 变 - 配 - ” 的全链条,同时延伸至对供电可
    的头像 发表于 09-17 09:54 1232次阅读
    电力<b class='flag-5'>监控</b><b class='flag-5'>系统</b>的应用场景,沃思<b class='flag-5'>智能</b>

    电力监控系统,沃思智能

    参数、设备状态进行**实时采集、监视、控制和分析**,实现对电力系统运行状态的全面掌控,是智能电网的重要组成部分。 一、电力监控系统的核心功能 电力
    的头像 发表于 09-17 09:28 834次阅读
    电力<b class='flag-5'>监控</b><b class='flag-5'>系统</b>,沃思<b class='flag-5'>智能</b>

    动环监控系统智能锁集成方案

    系统架构与工作原理动环监控系统智能锁集成采用三层架构:智能锁具层、动环监控单元(FSU)层和平
    的头像 发表于 09-05 11:28 785次阅读
    动环<b class='flag-5'>监控</b><b class='flag-5'>系统</b>与<b class='flag-5'>智能</b>锁集成方案

    智慧农业温室大棚物联网远程监控智能监测系统

    御控工业智能网关凭借其“边缘计算+全协议兼容+多端联动”的硬核技术,为温室大棚打造了一套全场景、高可靠的物联网远程监控智能监测系统,助力农
    的头像 发表于 08-08 16:57 1015次阅读
    智慧农业温室大棚物联网远程<b class='flag-5'>监控</b>与<b class='flag-5'>智能</b>监测<b class='flag-5'>系统</b>

    RISC-V 的平台思维和生态思维

    Doorn 认为,RISC-V 扩展要拥抱 “平台思维” 和 “生态思维”。   在 7 月 17 日举办的第五届(2025)RISC-V 中国峰会主论坛上,Leendert van Doorn 谈到
    发表于 07-17 14:04 4221次阅读

    移动基站远程集中监控系统与基站电力远程监控系统是什么监控系统

    物联网智能配电室监控系统包含哪些:综合监控系统、安全监控系统
    的头像 发表于 05-26 15:19 1060次阅读
    移动基站远程集中<b class='flag-5'>监控</b><b class='flag-5'>系统</b>与基站电力远程<b class='flag-5'>监控</b><b class='flag-5'>系统</b>是什么<b class='flag-5'>监控</b><b class='flag-5'>系统</b>

    智慧工厂第6期 实时监控系统打造智能数字化车间

    在工业4.0和智能制造浪潮的推动下,传统生产模式正加速向数字化、网络化、智能化方向演进。实时监控系统作为智慧工厂的核心支柱,正在重塑制造企业的运营方式。然而在
    的头像 发表于 04-22 09:50 806次阅读
    智慧工厂第6期 实时<b class='flag-5'>监控</b><b class='flag-5'>系统</b>—<b class='flag-5'>打造</b><b class='flag-5'>智能</b>数字化车间