当前位置:首页 > 消费电子 > 视频技术
[导读]   就在前天,隔壁邻居家的房子被租出去了。因为我是农村的,房子都是独立的带院子的,没错就是这样的:      因为家里经常没人住,并且还放有其他贵重物品,生怕一不留神,这些租户跳

  就在前天,隔壁邻居家的房子被租出去了。因为我是农村的,房子都是独立的带院子的,没错就是这样的:

  

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

  2:新闻报道

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

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

  3:方案设计详解

  

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

  1:硬件部分

  两个USB高清摄像头,

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

  一个树莓派3 modelB,

  散热扇(很重要!)

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

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

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

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

  

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

  2:代码部分

  下面慢慢道来!

  0&TImes;02:环境搭建

  curl安装: sudo apt-geTInstall curl

  MySQLdb安装: sudo apt geTInstallpython-pip sudo apt-geTInstalllibmysqlclient-dev pipinstallmysql-python

  LAMP: sudo apt-getinstallapache2 sudo apt-getinstallphp7.0sudo apt-getinstalllibapache2-mod-php7.0sudo apt-getinstallmysql-serversudo apt-getinstallphpmyadmin sudo chmod777/var/www/html/ sudoln-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 -pCREATEDATABASEIFNOTEXISTS`MS`DEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;USE`MS`;CREATETABLE`None`(`None`int(11)NOTNULL)ENGINE=InnoDBDEFAULTCHARSET=utf8;

  OpenCV: sudo apt-getinstallbuild-essential sudo apt-getinstallcmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-getinstallpython-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev gitclonehttps://github.com/0x024/opencv.git cd ~/opencv mkdirreleasecdreleasecmake -DCMAKE_BUILD_TYPE=RELEASE-DCMAKE_INSTALL_PREFIX=/usr/local.。 make -j1 sudo makeinstall

  0×03: 目录树

  

  0×04:代码分析

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

  总体文件函数的分布!

  

  checkdist()

  

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

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

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

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

  引脚与树莓派连接方式:

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

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

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

  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:运行

  代码forkgithub.com/0x024/MS官方博客0x024.com

  运行前, 需要将。/facepp/FaceAPI.py和BodyAPI.py中的api_key和api_secret换成你的 (为了便于您测试,我以将我的key放在里面,为了防止多人使用冲突,希望您后期换成个人的) 需要将。/facepp/Dbconnect.py中的数据库信息换成自己的 (在搭建环境过程中,建议密码全部设置成ubuntu,方便记忆)

  pythonimport.py#将。/data/master/目录下的图片特导入数据库

  pythonMS.py camera#运行图像捕捉

  pythonMS.py check#运行图像检测

  0×06:其他

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

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

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

  3:Good Luck

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭