2019-7-26 14:07:29 [显示全部楼层]
4550浏览
查看: 4550|回复: 1

[项目教程] 【转】基于树莓派+opencv的OneNET AI平台初体验:(1)人脸检测

[复制链接]
基于树莓派+opencv的OneNET AI平台初体验:(1)人脸检测

最近偶有闲暇,刚好OneNET开放了OneNET AI的API接口,于是我便试着申请了一下试用名额,一个下午的时间就通过了,效率不错哈哈。
【转】基于树莓派+opencv的OneNET AI平台初体验:(1)人脸检测图1
        目前AI平台主要开放了这么多点功能的API,嗯,如你所见,均属于图像处理方向的功能,因为是刚推出的,功能单一也是可以理解的。出于一个Geek的爱折腾的心,我搞回来了一块Geek必备的具有WIFI和蓝牙的树莓派zerow回来,也就是这个
【转】基于树莓派+opencv的OneNET AI平台初体验:(1)人脸检测图2
(此处应有树莓派的自拍)
趁下班时间自己摸索了一下,想将API应用到树莓派zero w上(用raspistil自拍不是咱这篇文章的目的-_-!!~),咱这回用opencv哦~。由于是体验式教学,我这里只是带大家入个门,搞一个人脸探测,具体的应用就仁者见仁,智者见智了哦~
1、 必要硬件准备
(1)      树莓派zero w一块
(2)      显示屏一块(HDMI接口的哦~得上电!VNC连接电脑也可以,只不过显示图片速度得看网速~)
(3)      最好带个摄像头(没摄像头就玩不了自pei了呀~)
(4)      HDMI接口转mini HDMI接口线一根
(5)      一块带raspbian系统的TF卡(不要lite轻量版的哦,lite只有命令行模式,这样就看不到帅照了呀哈哈)
2、 软件准备
当然,要用opencv,肯定要有个环境,上电,启动系统后,确保你的树莓派此时已经配置好WIFI并且连上WIFI了,然后再用Ctl+ Alt + T 快捷键进入命令框,这样就能舒舒服服写代码啦~有了解过opencv的童鞋肯定知道,这个东东的环境有多难配置(在win,mac上装比较新版本的cv确实能把人搞得晕头转向),还好这里我们是在树莓派上,而且还是号称最小卡片电脑的zero w上,我们根据zero w的性能只需要安装适配python2.7的opencv == 2.4.0的最轻量的版本就够啦~(更高版本的opencv需要编译安装,其依赖模块非常多,因而配置过程非常冗长)。
(1)      开工。第一步,当然是更新升级系统软件啦,有些依赖模块没有更新到最新版本可能会导致接下来要安装的模块失败。输入:
  • sudo apt-get update

  • sudo apt-get upgrade



(2)opencv第一个比较重要的依赖库就是numpy,这是一个python里关于矩阵计算的模块,图像处理经常用到。这时候我们可以用raspbian自带的pip包管理工具安装numpy,在打开的命令框里输入:
  • sudo pip install numpy


本示例里么有使用numpy,但是为了不会安装失败,导致一系列问题。还是安装一下下吧~
(3)安装opencv == 2.4.0模块。在命令框输入:
  • sudo pip install opencv-python


稍微等待那么一下下,大概几分钟吧,就完成啦。
(4)然后在命令框里输入:

  • python



在python解释器里输入:
  • import cv2


如果能够正常导入,没有报错,就说明opencv已经安装上了,这时,我们就可以开始使用OneNET AI的API啦。
【转】基于树莓派+opencv的OneNET AI平台初体验:(1)人脸检测图3
3、 OneNET AI 的API调用使用体验
(1)首先,说一下OneNET AI的人脸识别原理~嗯,是这样的,我们用摄像头拍下自pei后,将它存到一个目录下,然后我们编写代码,将此目录下的这张皂片以base64的方式编码成字符串,然后将这些字符串数据按照一定格式通过API接口上传到平台,平台识别完成后再返回包含你的人脸数据(置信度,你的脸廓方框的信息)的JSON字符串,然后你再在本地解析JSON数据,解析出这些脸廓方框的数据,最后在利用opencv强大的画图能力,将画上方框和置信度的图片展示出来。(当然你也可以将这张图片存到磁盘里存成一张图片,这里opencv是把它放到缓存中的),图片显示关掉就free掉了。
(2)然后~在上传base64编码的图片之前,我们需要调整自己的姿势,先自拍一张皂片~存到一个路径里,方便之后base64编码图片上传。(这是用vs code编辑器在win10上编辑的,方便展示)
(3)然后,从OneNET AI平台那里get.到一个APIKEY,以获得调用此API接口的权利。获取API KEY的程序,我们可以参考示例文档所示的代码~
【转】基于树莓派+opencv的OneNET AI平台初体验:(1)人脸检测图5
(4)获取到人脸脸廓方框的代码如下
【转】基于树莓派+opencv的OneNET AI平台初体验:(1)人脸检测图4
(5)然后是对平台发回来的人脸数据的处理以及提取出置信度的代码
【转】基于树莓派+opencv的OneNET AI平台初体验:(1)人脸检测图6
(6)最后我们就可以用opencv画图啦
【转】基于树莓派+opencv的OneNET AI平台初体验:(1)人脸检测图7
(7)最后的效果如下~(没办法,shuai到模糊。。。【摊手】)
       没有树莓派的小伙伴我在这里附上win10系统上在python3.6环境下,用python的画图工具PIL模块来体验OneNET AI平台人脸探测功能的小段代码。(在此步骤之上的这些代码,在树莓派下和win10的python环境下是可以通用的哦~文件路径改一下就可以了,不会的留言我可以回答你~)
【转】基于树莓派+opencv的OneNET AI平台初体验:(1)人脸检测图8
嗯,按照我的惯例,文末应该是要开源代码的~~(树莓派、win10系统python环境下都有哦~)
提取码:v139

打不开链接的点击右键复制,然后粘贴到浏览器新页面里面打开!!!打不开链接的点击右键复制,然后粘贴到浏览器新页面里面打开!!!
打不开链接的点击右键复制,然后粘贴到浏览器新页面里面打开!!!

后记:
1、用zero w上传一张原图800k的图片,真的好慢呀。。。(我用的200M宽带。。而且是把树莓派放到路由器上面的-_-)上传过程需要十几二十秒吧,返回结果很快,大概二十几秒就可以看到自己的(帅到模糊)的皂片。。大家可以在base64编码上传之前把拍下来的图片,最好resize一下,图片小点上传也快一点,出于python本就是解释性脚本语言的缘故,速度慢这个确实不可避免,但是可以适当优化~
2、后续除了视频里的运动对象检测我没做之外,其他功能的代码编写以及树莓派移植,我将在有闲暇的时间陆续推出~希望大家喜欢~
最后的最后,希望和各位童鞋一起多多交流学习,一同进步,更希望大家多多支持OneNET呀~

DFHy4hWhYyr  中级技师

发表于 2019-8-16 08:31:06

111111111111111111
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail