zoukankan      html  css  js  c++  java
  • h5 mui 调用摄像头实现人脸识别登录

      1 <!DOCTYPE html>
      2 <html>
      3 
      4     <head>
      5         <meta charset="utf-8">
      6         <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
      7         <title></title>
      8         <link href="css/mui.min.css" rel="stylesheet" />
      9 
     10         <style>
     11             body,
     12             div,
     13             dl,
     14             dt,
     15             dd,
     16             ul,
     17             ol,
     18             li,
     19             h1,
     20             h2,
     21             h3,
     22             h4,
     23             h5,
     24             h6,
     25             pre,
     26             code,
     27             form,
     28             fieldset,
     29             legend,
     30             input,
     31             textarea,
     32             p,
     33             blockquote,
     34             th,
     35             td,
     36             hr,
     37             button,
     38             article,
     39             aside,
     40             details,
     41             figcaption,
     42             figure,
     43             footer,
     44             header,
     45             hgroup,
     46             menu,
     47             nav,
     48             section,
     49             br {
     50                 margin: 0;
     51                 padding: 0;
     52             }
     53             
     54             body {
     55                 font-family: "microsoft yahei";
     56                 color: #FFFFFF;
     57                 overflow-x: hidden;
     58                 overflow-y: hidden;
     59                 background: #333333;
     60             }
     61             .mui-bar{
     62                 background: #333333;
     63                 box-shadow: none;
     64             }
     65             .back{
     66                 font-size: 22px;
     67                 height: 100px;
     68                 line-height: 100px;
     69                 padding:0 10px;
     70                 border: 0px solid red;
     71                 margin-left: 10px;
     72             }
     73             .back img{    
     74                 width: 12px;
     75                 height: 24px;
     76             }
     77             .mui-content{
     78                 width: 60%;
     79                 margin: 80px auto 50px auto;
     80                 background:#333333 ;
     81                 text-align: center;
     82                 border: 0px solid red;
     83             }
     84             .mui-content div{
     85                 width: 100%;
     86                 background:#333333 ;
     87                 border: 0px solid red;
     88             }
     89             .mui-content label{                
     90                 color: #FFFFFF;
     91                 text-align: center;
     92                 border: 0px solid red;
     93             }
     94             .mui-btn {
     95                 padding: 10px;
     96                 width: 80%;
     97                 margin: auto;
     98             }
     99             .mui-content-setting1 {
    100                 width: 100%;
    101                 background: #333333;
    102                 border: 0px solid red;
    103                 padding: 0 10px;
    104                 font-size: 20px;
    105                 float: left;
    106             }
    107             .button {
    108                 background: url(icon/setting/button.png) no-repeat;
    109                 background-size: 100% 100%;
    110                 -moz-background-size: 100% 100%;
    111                 font-size: 20px;
    112                 width: 80%;
    113                 height: 50px;
    114                 margin: auto;
    115                 line-height: 50px;
    116                 border: none;
    117                 color: #FFFFFF;
    118             }
    119             video{
    120                 transform: rotateY(180deg);
    121                 -webkit-transform: rotateY(180deg);    /* Safari 和 Chrome */
    122                 -moz-transform: rotateY(180deg);
    123             }
    124         </style>
    125     </head>
    126 
    127     <body>
    128         <header class="mui-bar mui-bar-nav">
    129             <div id='user' class="mui-pull-left">
    130                 <div class="mui-pull-left back" onclick="back()">
    131                     <img class="mui-icon-back" src="icon/main/back.png" />
    132                 </div>
    133             </div>
    134             <span class="mui-title">人脸识别登录</span>
    135     </header>
    136                  
    137         <div class="mui-content">
    138             <div style="margin: auto;margin-bottom: 50px; ">
    139                 <video id="video" width="100%" height="100%" style="border: 0px solid red;margin: auto;"></video>
    140                 <canvas id='canvas' width="100%" height="100px" style="display: none;"></canvas>                
    141                 <!--<img id='img' src=''>-->
    142             </div>    
    143             <label>请正对手机进行人脸验证</label>
    144         </div>    
    145         <!--<div class="mui-content-setting1">
    146             <div id='check' class="button mui-text-center">人脸识别</div>
    147         </div>-->
    148         <script src="js/jquery-2.0.0.min.js" type="text/javascript" charset="utf-8"></script>
    149         <script src="js/mui.min.js"></script>
    150         <script>
    151             function back() {
    152                 plus.webview.open("login.html"); 
    153             }
    154             var video,canvas,vendorUrl,interval;
    155             var time=0;
    156             //自动拍照
    157             function getface(){
    158                 time++;            
    159                 
    160                 //绘制canvas图形
    161                 canvas.getContext('2d').drawImage(video, 0, 0, 100, 100);
    162                 //把canvas图像转为img图片
    163                 var bdata = canvas.toDataURL("image/png");
    164                 //img.src = canvas.toDataURL("image/png");
    165                 var base64 = bdata.split(',')[1];//照片压缩成base位数据
    166                 //提交至接口匹配人脸库
    167                 $.post('http://192.168.1.39:8039/FaceWebService.asmx/getFace', {
    168                     "face": base64,
    169                     "group": "test"
    170                 }, function(data) {                        
    171                     //人脸识别成功直接跳转至主页
    172                     if(data.error_code == "0") {
    173                         clearInterval(interval);//清除定时器  
    174                         plus.webview.open("main.html");    //跳转至主页                        
    175                     } else if(time>9){
    176                         clearInterval(interval);//清除定时器 
    177                         time=0;//重新计时
    178                         //10s后未识别成功,提示用户
    179                         if(data.error_code == "110") {
    180                             alert("人脸匹配度低于70,匹配失败!");
    181                         } else if(data.error_code == "222202") {
    182                             alert("未检测到人脸,请使用账号登录!");                            
    183                         } else if(data.error_code == "222203") {
    184                             alert("无法解析人脸,请检查图片质量!");
    185                         } else if(data.error_code == "222207") {                            
    186                             alert("未找到匹配的用户,请确认人脸库中是否存在此用户!");
    187                         }else {
    188                             alert("匹配失败,错误代码:" + data.error_code + ",请联系技术人员!");
    189                         }
    190                         plus.webview.open("login.html"); 
    191                     }    
    192                 }, 'json');
    193             }
    194             
    195             (function($, doc) {
    196                 $.init(); 
    197                 $.plusReady(function() {
    198                     video = doc.getElementById('video'),
    199                     canvas = doc.getElementById('canvas'),
    200                     vendorUrl = window.URL || window.webkitURL;
    201                         
    202                     //初始化摄像头:媒体对象;仅支持android,ios11.0一下系统均不支持
    203                     navigator.getMedia =navigator.getUserMedia || navagator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
    204 
    205                     navigator.getMedia({
    206                         video: true, //使用摄像头对象
    207                         audio: false //不适用音频
    208                     }, function(strem) {
    209                         video.src = vendorUrl.createObjectURL(strem);
    210                         video.play();
    211                     }, function(error) {
    212                         alert(error);
    213                     });
    214                     //getface(); 
    215                     
    216                     interval=setInterval(getface,1000);
    217                     
    218                     /*//手动拍照
    219                     var checkButton = doc.getElementById('check');
    220                     checkButton.addEventListener('tap', function(event) {
    221                         
    222                     });*/
    223                 });
    224             }(mui, document));
    225         </script>
    226     </body>
    227 
    228 </html>
  • 相关阅读:
    VS2005 Web安装程序 创建程序菜单组
    文件夹 文件 加入/去除 Everyone全控
    [转]asp.net 部署数据库、开始菜单、桌面快捷方式实例
    身边的贵人
    AppCode下的cs类 取得相关路径
    遭遇“windows已经阻止此软件因为无法验证发行者”
    成功不是忽悠
    关于 软件注册授权 防止被大面积免费扩散 的设想
    [转]获取机器的硬件信息(CPU ID序列号, 主板信息,硬盘序列号,系统信息)
    递交辞呈之后
  • 原文地址:https://www.cnblogs.com/dreamzcy/p/10314347.html
Copyright © 2011-2022 走看看