当前位置: 首页 > news >正文

网站开发项目延期说明南京seo关键词优化资讯

网站开发项目延期说明,南京seo关键词优化资讯,怎么自己做一个网站平台,公司网络推广平台暑【这段时间有点忙#xff0c;终于截止今天2018.06.22完成了人脸识别的最后一道程序——活体检测之眨眨眼和张张嘴】关于人脸识别的内容我之前也写过好几篇博文#xff0c;其中有#xff1a; {java实现人脸识别源码} {C#winforms实现windows窗体人脸识别} {人脸识别活体检测… 暑【这段时间有点忙终于截止今天2018.06.22完成了人脸识别的最后一道程序——活体检测之眨眨眼和张张嘴】关于人脸识别的内容我之前也写过好几篇博文其中有 {java实现人脸识别源码} {C#winforms实现windows窗体人脸识别} {人脸识别活体检测测试案例} 大家可以去看看其中兼容性也比较良好支持常用浏览器火狐、谷歌、360、UC浏览器以及opera浏览器源码也已经上传成功所需要的JS文件和jar也都上传到资源页。好了我们废话不多说先来说说今天的内容。 眨眨眼和张张嘴在哪里用的到呢如果大家不知道其他的软件大家肯定知道支付宝软件吧其中支付宝软件登陆的时候就会语音提示眨眨眼和张张嘴来验证是不是本人登陆限制照片登陆 以前刚开始写的时候我写的人脸识别用照片也可以识别然后好多粉丝留言说这太不安全了还有几个用嫌弃的眼神对我说你这做的还有啥用我拿着你的照片来登陆居然能登陆成功还不如以前的密码登陆安全呢。其实他没做出来~我也没说啥毕竟是自己做的不完善呢忍气吞声继续深入研究。终于做出来了后来的活体检测也就是上面的第二个链接 但是…… 这个活体检测有时候会失误会失误会失误 这是个很大的bug于是我就开始开发现在的眨眨眼和张张嘴~一、首先我来说一下运行过程首先进入页面login.jsp中点击检测按钮 接着你会听到语音提示现在请张张嘴这个语音提示可是专门找美女录得音呢~ 你就按照语音提示张张嘴就可以了张合张合重复一遍就大概可以验证成功了接着你就会听见语音提示现在请眨眨眼这时候你眨眨眼就行了验证通过会进入我的网站,期间如果你的脸没有放置好的话就会提示 当你看到提示这个的时候你把脸调整的放到框内就可以了。实在不行你就刷新一下网页重新来一遍吧。二、技术分析技术方面有以下几个步骤第一js调用前台摄像头读取人脸信息提交到后台的FaceServlet中通过ajax进行交互参数分别是type : “post”,//提交方式url : “faceServlet”,//请求地址data : { “img” : imgData1, “tag” : “eye”//区分是眨眼还是张嘴 }//数据4.dataType : “json” 上面就是ajax请求的参数然后写个回调函数就可以了。 第二、拿着Base64图像数据之后去检测去检测回来的数据如下所示{ “timestamp”: 1528371144, “result”: { “face_list”: [{ “expression”: { “probability”: 0.9999684095, “type”: “none” }, “face_probability”: 0.9626089931, “glasses”: { “probability”: 0.9998494387, “type”: “common” }, “location”: { “height”: 307, “rotation”: 2, “width”: 273, “left”: 296.1046143, “top”: 163.5777588 }, “landmark72”: [ { “y”: 241.360199, “x”: 292.4519043 }, { “y”: 284.3699341, “x”: 295.9116211 }, { “y”: 328.4156189, “x”: 304.021759 }, { “y”: 371.3819275, “x”: 314.0935364 }, { “y”: 416.5806274, “x”: 333.3151245 }, { “y”: 459.6279297, “x”: 370.47229 }, { “y”: 476.2438354, “x”: 412.0462036 }, { “y”: 469.1072998, “x”: 457.7119141 }, { “y”: 435.0166626, “x”: 501.7189941 }, { “y”: 390.2756348, “x”: 532.2461548 }, { “y”: 345.0927124, “x”: 548.138916 }, { “y”: 299.1921692, “x”: 559.2930298 }, { “y”: 254.285141, “x”: 565.3004761 }, { “y”: 230.1785583, “x”: 329.6694946 }, { “y”: 222.2650757, “x”: 343.285614 }, { “y”: 220.7796631, “x”: 356.7460938 }, { “y”: 223.9135742, “x”: 371.3406677 }, { “y”: 233.6182861, “x”: 385.2095947 }, { “y”: 235.2540588, “x”: 370.6172485 }, { “y”: 236.2314148, “x”: 356.4389343 }, { “y”: 234.2461243, “x”: 341.9369507 }, { “y”: 227.4796143, “x”: 355.9927368 }, { “y”: 193.4365387, “x”: 313.8055115 }, { “y”: 170.465332, “x”: 331.9764404 }, { “y”: 166.3371429, “x”: 356.399353 }, { “y”: 170.4036255, “x”: 380.4868774 }, { “y”: 188.2350311, “x”: 401.4260559 }, { “y”: 188.1490021, “x”: 379.4369202 }, { “y”: 186.7609863, “x”: 356.0379028 }, { “y”: 188.6333923, “x”: 333.6030884 }, { “y”: 237.4863892, “x”: 465.0245972 { “y”: 192.1312256, “x”: 450.9655762 }, { “y”: 176.1939087, “x”: 474.1013794 “x”: 375.137085 }, { “y”: 363.3876343, “x”: 393.6142578 }, { “y”: 360.5367126, “x”: 422.6240845 }, { “y”: 366.1363525, “x”: 451.1436768 }, { “y”: 389.2103271, “x”: 469.8604736 }, { “y”: 407.2568359, “x”: 450.6833191 }, { “y”: 413.2620239, “x”: 420.4364014 }, { “y”: 403.9484863, “x”: 390.8678589 }, { “y”: 377.3647461, “x”: 396.2229004 }, { “y”: 376.8469238, “x”: 421.9415588 }, { “y”: 379.1690674, “x”: 447.9805908 }, { “y”: 390.7108154, “x”: 446.4016724 }, { “y”: 391.1112061, “x”: 421.5936279 }, { “y”: 388.0070801, “x”: 396.4388733 } ], “face_token”: “05f2d8abe9fb3ff0a7b2e590c3af1b94”, “face_shape”: { “probability”: 0.5348426104, “type”: “oval” }, “race”: { “probability”: 0.9990831614, “type”: “yellow” }, “angle”: { “yaw”: 0.9113687873, “roll”: 2.805583239, “pitch”: -3.07931757 }, “landmark”: [ { “y”: 227.4796143, “x”: 355.9927368 }, { “y”: 233.886261, “x”: 491.254364 }, { “y”: 305.3646545, “x”: 421.223877 }, { “y”: 385.065155, “x”: 421.7819214 } ], “, “quality”: { “completeness”: 1, “occlusion”: { “left_eye”: 0, “chin_contour”: 0.2168905884, “mouth”: 0, “right_cheek”: 0.02743142098, “left_cheek”: 0.01728247851, “nose”: 0.08578856289, “right_eye”: 0 }, “blur”: 8.371096101E-7, “illumination”: 54 }, “face_type”: { “probability”: 0.9988574386, “type”: “human” } }], “face_num”: 1 }, “cached”: 0, “error_code”: 0, “log_id”: 2850674365, “error_msg”: “SUCCESS” }看到上面的json数据我当时一看是懵逼的状态这json解析起来有点费力经过一番折腾终于可以解析出来了其中解析方法如下public static Landmark  parsingFaceJson(JSONObject json_str){Landmark landmark new Landmark();//开始解析json//JSONObject  dataJsonnew JSONObject(json_str);//找到result节点JSONObject  response_resultjson_str.getJSONObject(result);//继续找face_list节点JSONArray face_list_jsonArrayresponse_result.getJSONArray(face_list);JSONObject face_list_jsonObjectface_list_jsonArray.getJSONObject(0);//找到landmark关键点节点4个关键点位置左眼中心、右眼中心、鼻尖、嘴中心final JSONArray landmark_jsonArrayface_list_jsonObject.getJSONArray(landmark);//左眼中心landmark.setLeft_eye_zhongxin(new ArrayListDouble(){{add((Double) landmark_jsonArray.getJSONObject(0).get(y)); add((Double) landmark_jsonArray.getJSONObject(0).get(x));}});//右眼中心landmark.setRight_eye_zhongxin(new ArrayListDouble(){{add((Double) landmark_jsonArray.getJSONObject(1).get(y)); add((Double) landmark_jsonArray.getJSONObject(1).get(x));}});//鼻尖landmark.setNose_zhongxin(new ArrayListDouble(){{add((Double) landmark_jsonArray.getJSONObject(2).get(y)); add((Double) landmark_jsonArray.getJSONObject(2).get(x));}});//嘴中心landmark.setMouse_zhongxin(new ArrayListDouble(){{add((Double) landmark_jsonArray.getJSONObject(3).get(y)); add((Double) landmark_jsonArray.getJSONObject(3).get(x));}});//继续找landmark72节点final JSONArray landmark72_jsonArrayface_list_jsonObject.getJSONArray(landmark72);//左眼上边landmark.setLeft_eye_top(new ArrayListDouble(){{add((Double) landmark72_jsonArray.getJSONObject(14).get(y)); add((Double) landmark72_jsonArray.getJSONObject(14).get(x));}});//左眼下边landmark.setLeft_eye_bottom(new ArrayListDouble(){{add((Double) landmark72_jsonArray.getJSONObject(19).get(y)); add((Double) landmark72_jsonArray.getJSONObject(19).get(x));}});//右眼上边landmark.setRight_eye_top(new ArrayListDouble(){{add((Double) landmark72_jsonArray.getJSONObject(32).get(y)); add((Double) landmark72_jsonArray.getJSONObject(32).get(x));}});//右眼下边landmark.setRight_eye_bottom(new ArrayListDouble(){{add((Double) landmark72_jsonArray.getJSONObject(36).get(y)); add((Double) landmark72_jsonArray.getJSONObject(36).get(x));}});//嘴巴上边landmark.setMouse__top(new ArrayListDouble(){{add((Double) landmark72_jsonArray.getJSONObject(60).get(y)); add((Double) landmark72_jsonArray.getJSONObject(60).get(x));}});//嘴巴下边landmark.setMouse__bottom(new ArrayListDouble(){{add((Double) landmark72_jsonArray.getJSONObject(70).get(y)); add((Double) landmark72_jsonArray.getJSONObject(70).get(x));}});return landmark;}其中的Landmark 类型 是个实体类实体类的源码请参考本文末~ 解析完json就可以分析数据了当时在此处遇到了个难点很是想不通的一个逻辑于是就去各大java群里面进行提问功夫不负有心人遇到一大佬给我话了个图解决了我当时的难点这边要特别鸣谢一下大佬图 光看图大家肯定看不明白我在这里先解释一下吧我当时的思路是前台通过定时器每1s进行提交一次图像数据然后在后台进行比较上一次执行结果和下一次执行结果的值然后想不通这里面的业务是什么样子的于是就有了上面的这张图。第三、分析数据张嘴通过json获取嘴中心的点和上边、下边的位置张嘴和闭嘴是有差别的差别如下解析的json数据嘴巴分析----闭着嘴巴第一次的上嘴唇361.1332397 第一次的嘴唇中心378.8190308 第一次的下嘴唇382.1697388上中17 下中4第一次的上嘴唇390.951355 第一次的嘴唇中心409.0862122 第一次的下嘴唇414.6711731上中19 下中5第一次的上嘴唇402.4402466 第一次的嘴唇中心417.4428406 第一次的下嘴唇419.6887207上中15 下中2第一次的上嘴唇403.1029358 第一次的嘴唇中心419.4420166 第一次的下嘴唇424.0343018上中16 下中5第一次的上嘴唇445.7279663 第一次的嘴唇中心455.8665161 第一次的下嘴唇457.3482971上中10 下中2第二次的上嘴唇454.5872192 第二次的嘴唇中心462.1132812 第二次的下嘴唇463.1278381上中8 下中1上中嘴唇上边与嘴唇中心的距离 下中嘴唇下边与嘴唇中心的距离眨眼正常人的眼镜都是有两只左眼和右眼所以这边我们比较的时候就比张嘴验证麻烦了思路还是和张嘴的思路是一样的下面的返回解析的分析数据***********************************************************************************闭着眼的左眼上边250.549469 闭着眼的左眼中间252.7034607 闭着眼的左眼下边258.3751831 闭着眼的左眼上边与中间的值2.153991700000006 闭着眼的左眼下边与中间的值5.6717224000000215 闭着眼的右眼上边248.886261 闭着眼的右眼中间251.9490204 闭着眼的右眼下边257.2275391 闭着眼的右眼上边与中间的值3.0627594000000045 闭着眼的右眼下边与中间的值5.2785187000000064闭着眼的左眼上边236.7052612 闭着眼的左眼中间239.7859192 闭着眼的左眼下边245.471283 闭着眼的左眼上边与中间的值3.0806579999999997 闭着眼的左眼下边与中间的值5.685363800000005 闭着眼的右眼上边234.837738 闭着眼的右眼中间238.6846619 闭着眼的右眼下边244.2976685 闭着眼的右眼上边与中间的值3.8469239000000073 闭着眼的右眼下边与中间的值5.613006599999977闭着眼的左眼上边245.0596619 闭着眼的左眼中间246.9369202 闭着眼的左眼下边252.2763367 闭着眼的左眼上边与中间的值1.877258299999994 闭着眼的左眼下边与中间的值5.339416499999999 闭着眼的右眼上边241.4249573 闭着眼的右眼中间244.3227234 闭着眼的右眼下边249.2035217 闭着眼的右眼上边与中间的值2.8977661000000126 闭着眼的右眼下边与中间的值4.880798300000009********************************************************************************* 闭着眼的左眼上边与中间的值2.843383799999998 闭着眼的左眼下边与中间的值6.379211400000003 闭着眼的右眼上边与中间的值3.6415863 闭着眼的右眼下边与中间的值5.569457999999997 闭着眼的左眼上边与中间的值7.1395263 闭着眼的左眼下边与中间的值8.606811599999986 闭着眼的右眼上边与中间的值7.101028499999984 闭着眼的右眼下边与中间的值7.526168800000022 闭着眼的左眼上边与中间的值4.141037000000011 闭着眼的左眼下边与中间的值7.363510200000007 闭着眼的右眼上边与中间的值4.587234499999994 闭着眼的右眼下边与中间的值6.540771500000034 闭着眼的左眼上边与中间的值2.4197997999999643 闭着眼的左眼下边与中间的值5.460693300000003 闭着眼的右眼上边与中间的值2.9811705999999845 闭着眼的右眼下边与中间的值4.65585329999999上面数据一大推大家看出来个123就行了。 验证成功返回前台就行了。关键代码贴上来 张张嘴的验证/*** * Description: 该方法的主要作用张张嘴验证* Title: face_jiance* param param img* param param response* param param request 设定文件  * return  返回类型void   * throws* 个人博客https://blog.csdn.net/qq_34137397*/private void face_mouse(String img, HttpServletResponse response,HttpServletRequest request) {        /*if (dataMap.get(1) null) {// 第一次请求landmark face_jiance(img);System.out.println(第一次的上嘴唇landmark.getMouse__top().get(0));System.out.println(第一次的嘴唇中心landmark.getMouse_zhongxin().get(0));System.out.println(第一次的下嘴唇landmark.getMouse__bottom().get(0));dataMap.put(1, landmark);} else {*/// 不是第一次请求Landmark landmark_next face_jiance(img);            // 和前一次的数据进行比较//Landmark landmark_pre (Landmark) dataMap.get(1);// 嘴唇上面的位置相对于中心点对比PrintWriter writer;            if ((landmark_next.getMouse_zhongxin().get(0) - landmark_next.getMouse__top().get(0)) 40(landmark_next.getMouse__bottom().get(0) - landmark_next.getMouse_zhongxin().get(0)) 30) {                    try {writer response.getWriter();writer.print(1);} catch (IOException e) {                        // TODO 异常执行块e.printStackTrace();}}else{                try {writer response.getWriter();writer.print(0);} catch (IOException e) {                    // TODO 异常执行块e.printStackTrace();}}            //dataMap.put(1,landmark_next);         //放进去  方便下次进行比较}    /*}*/眨眨眼的验证代码/*** * Description: 该方法的主要作用眨眼对比* Title: face_eye* param  param img* param  param response* param  param request 设定文件  * return  返回类型void   * throws* 个人博客https://blog.csdn.net/qq_34137397*/private void face_eye(String img, HttpServletResponse response,HttpServletRequest request) {Landmark landmark_next face_jiance(img);System.out.println(闭着眼的左眼上边与中间的值((landmark_next.getLeft_eye_zhongxin().get(0))-(landmark_next.getLeft_eye_top().get(0))));System.out.println(闭着眼的左眼下边与中间的值((landmark_next.getLeft_eye_bottom().get(0))-(landmark_next.getLeft_eye_zhongxin().get(0))));System.out.println(闭着眼的右眼上边与中间的值((landmark_next.getRight_eye_zhongxin().get(0))-(landmark_next.getRight_eye_top().get(0))));System.out.println(闭着眼的右眼下边与中间的值((landmark_next.getRight_eye_bottom().get(0))-(landmark_next.getRight_eye_zhongxin().get(0))));System.out.println(__________________________________________________);PrintWriter writer;if ((landmark_next.getLeft_eye_zhongxin().get(0))- (landmark_next.getLeft_eye_top().get(0)) 6 (landmark_next.getRight_eye_zhongxin().get(0))- (landmark_next.getRight_eye_top().get(0)) 6) {System.out.println(进来了上边验证成功);// 继续判断下边的if ((landmark_next.getLeft_eye_bottom().get(0))- (landmark_next.getLeft_eye_zhongxin().get(0)) 6.6 (landmark_next.getRight_eye_bottom().get(0))- (landmark_next.getRight_eye_zhongxin().get(0)) 6.6) {System.out.println(进来了下边验证成功);try {writer response.getWriter();writer.print(1);} catch (IOException e) {// TODO 异常执行块e.printStackTrace();}} else {try {writer response.getWriter();writer.print(0);} catch (IOException e) {// TODO 异常执行块e.printStackTrace();}}}}最后上传源码【请点击阅读原文获取源码】感谢您抽出  · 来阅读此文更多精彩请点击【阅读原文】哦↓↓↓青鸟IT汇一个专注于IT技术和互联网资讯的公众号欢迎大家的关注
http://wiki.neutronadmin.com/news/345558/

相关文章:

  • 导视设计网站做库房推广哪个网站好
  • 网站标签怎么改html5 手机网站模板
  • 外贸做网站用什么qq登录网站怎么做
  • 做网站创业直播代运营收费多少
  • 做旅游地产的网站和公司下载源代码建网站
  • 上海汽车网站建设wordpress入门书籍
  • 中山火炬开发区建设局网站曲阳县做网站
  • 怎样做网站 网页七牛云域名
  • 沈阳网站建设哪里好网站空间租赁
  • 个人开网站网站建设数据库怎么传送
  • 2021手机能看的网站淮阳网站建设
  • 购物分享网站模板曹鹏wordpress建站seo视频
  • 北京官方网站网乐清网论坛
  • 企业备案网站名称怎么填邯郸市做网站建设
  • 网站类型的销售东莞市建设局网站首页
  • app软件网站建设网站设网站设计
  • 怎么用腾讯云做网站甘肃网站建设
  • 常州便宜的做网站服务高校 网站建设实施方案
  • 夸克建站系统源码下载品牌网站建设优化公司排名
  • 做网站效果头条新闻 最新消息条
  • 电商网站开发毕业设计惠阳网站建设公司
  • 自己怎么开发网站凡科网站建站教程
  • 南京网站建设公司有哪些深圳外贸网站设计
  • 电商数据分析网站公司画册模板
  • 怎么用网站源码做网站湘潭做网站口碑好磐石网络
  • 网站建设公司网站建设专业品牌深圳建设交易网站
  • 网站链接只显示到文件夹怎么做的wordpress上传主题过期
  • 昆明网站seo优化茂名企业建站程序
  • 有哪些做数据比较好的网站wordpress邮件发送失败
  • 食堂网站建设方案wap软件下载