企业建立网站的必要性,wordpress怎么访问数据库,中建一局华江建设有限公司网站,服务器主机搭建网站由于种种原因#xff0c;最近想亲自做一个基于pythonfacepp打造的智能监控系统。 000#xff1a;萌芽 1#xff1a;暑假在家很无聊 想出去玩#xff0c;找不到人。玩个lol#xff08;已卸载#xff09;#xff0c;老是坑人。实在是无聊至极#xff0c;不过#x…由于种种原因最近想亲自做一个基于pythonfacepp打造的智能监控系统。 0×00萌芽 1暑假在家很无聊 想出去玩找不到人。玩个lol已卸载老是坑人。实在是无聊至极不过就在前天隔壁邻居家的房子被租出去了。因为我是农村的房子都是独立的带院子的没错就是这样的 因为家里经常没人住并且还放有其他贵重物品生怕一不留神这些租户跳到我家。把这些东西洗劫一空。此时我已经安耐不住内心的小激动那么。搭建一个智能监控系统可好 2新闻报道 2017年7月13日讯家庭摄像头遭入侵公民隐私被侵犯的案子已经破了。今天傍晚市公安局发布消息称19天内北京警方成功打掉了全国首例网上传播家庭摄像头破解软件的犯罪链条抓获涉案人员24名。————–2017-07-13 18:56 编辑TF003 来源北京晚报 这些人的脑袋都秀逗了吧这都能干出来吓得我赶紧自己搭建了一个智能监控系统。 3外快 挣点外快 0×01:Xmind思维 先大概叙述一下MS的功能 1硬件部分 两个USB高清摄像头一个超声波传感器HC-SR04一个树莓派3 modelB散热扇很重要 对于超声波传感器主要的功能就是检查距离的变化也就是说当检测是有运动物体的产生才会激活摄像头。 1也是为了减轻树莓派CPU负荷 2合理利用那可怜的32G内存卡 对于两个摄像头一个放置在家门口的过道里每当来人的时候超声波传感器变化检测到运动物体这时会激活摄像头便会捕捉一系列图片让系统进行分析包括面部身体等信息所以这个摄像头要求拍摄的质量和角度要很好另一个摄像头这放置在院子的边角要求能照到整个院子这个摄像头主要任务就是检测人体并不强求识别出人脸毕竟距离太远。 对于树莓派做个监控系统的话不能一直把电脑放在上面吧那样太浪费资源了所以当时狠心的买了个3B不过还好用起来不错他的角色就是处理硬件传回来的各种信息。。。 2代码部分 下面慢慢道来 0×02环境搭建 curl安装
sudo apt-get install curlMySQLdb安装
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/;extensionphp_mbstring.dll/extensionphp_mbstring.dll/ /etc/php/7.0/apache2/php.ini sudo /etc/init.d/apache2 restart mysql --userroot -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) ENGINEInnoDB DEFAULT CHARSETutf8; 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_TYPERELEASE -D CMAKE_INSTALL_PREFIX/usr/local .. make -j1 sudo make install 0×03: 目录树 0×04:代码分析 1MS.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 可能会觉得上图函数有点多余其实不然图示的这种是适合于小区的只有一个门口的家庭想想也对 当使用两个摄像头的时候就会用到如图的函数这里用到了最简单的多线程threadPS本人能力有限暂时还没法理解threading这个自定义的多线程方法可以在运行cam的时候使得cam0,和cam1的基本同时运行 cami 这个函数的主要功能就是图像的运动检测当有运动物体时便会将图片以“%Y%m%d%H%M%S’’_’str(0)”的格式记录下来有时候可能存在两个摄像头同时工作记录导致记录下来的图片日期一样为了避免这个Error产生在日期的后面加上了摄像头“i”的标识用来进行分辨 这里采用时间来控制camera.release当运行的时间10s时候便会退出cami这个时间基本要和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与数据路中的人脸进行比对并返回该面部所对对应的IDnamemgender等信息 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 这是就会开图像截取的功能 2BodyAPIFaceAPIimport.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服务器可以远程查看加上通讯模块及时进行数据反馈等等最重要的就是有大脑风暴 3Good Luck 0×07总结 穿着内衣坐在电脑前直到凌晨一如既往 情愿坐在电脑前吃方便面也不愿出去约会 能够修好任何东西 打字比你思考还快 比和人们在一起花更多的时间上网 不能理解为什么有些人不能从头到尾装起一台完整的电脑来 不相信有图形的WEB浏览——lynx始终是最好的选择也是唯一的需要 使用文本编辑器——而不是文字处理软件——来回所有的信件 从不决不绝对不穿西装 相信只有Sucker才付费——免费网络连接自由软件用IP打电话