zoukankan      html  css  js  c++  java
  • 人脸识别

    样式html

    <!--刷脸-->
    <div hr-draggable modal="faceTradeModal" options="faceTradeOpts" id="faceTradeModal">
        <div class="modal-header">
            <h5>刷脸认证</h5>
        </div>
        <div class="modal-body form-horizontal margin5" style="text-align: center;">
            <video id="myVideo" width="500px" height="500px" ></video>
            <canvas id="myCanvas" width="200px" height="150px" ng-show="false"></canvas>
        </div>
        <div class="modal-footer">
            <button class="btn btn-primary" ng-click="updateFace()" ng-show = "autoFace == 0">认证</button>
        </div>
    </div>

    javaScript

    var mediaStreamTrack;
    //打开人脸认证modal
    $scope.openFaceTradeModel = function (){
        //获取照片
        $http.get(Path.getUri("api/patient/patient-id/" + $scope.activePatientInfo.patientId + "/photo"), {responseType: "arraybuffer"})
            .success(function (data) {
                $scope.faceTradeModal = true;
                $scope.currentFaceDate = _arrayBufferToBase64(data);
                setTimeout(function () {
                    //打开摄像头
                    $scope.openFace();
                },500);
            })
            .error(function () {
            });
    };
    //截取头像
    $scope.getFace = function(){
        var canvas = $('#myCanvas')[0],
            context = canvas.getContext('2d'),
            video = $('#myVideo')[0];
        context.drawImage(video, 0, 0, 200, 150);
    }
    //关闭modal框清理计时器
    $scope.closeFaceTradeModal = function(){
        $scope.faceTradeModal = false;
        if($scope.funHandle){
            clearInterval($scope.funHandle);
        }
        mediaStreamTrack && mediaStreamTrack.stop();
    }
    //打开摄像头
    $scope.openFace = function() {
        // 获取媒体方法(旧方法)
        navigator.getMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMeddia || navigator.msGetUserMedia;
    
        var canvas = $('#myCanvas')[0],
            context = canvas.getContext('2d'),
            video = $('#myVideo')[0];
        // 获取媒体方法(新方法)
        // 使用新方法打开摄像头
        if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
            navigator.mediaDevices.getUserMedia({
                video: true,
                audio: true
            }).then(function (stream) {
                console.log(stream);
                mediaStreamTrack = typeof stream.stop === 'function' ? stream : stream.getTracks()[1];
                video.src = (window.URL || window.webkitURL).createObjectURL(stream);
                video.play();
            }).catch(function (err) {
                console.log(err);
            })
        }
        // 使用旧方法打开摄像头
        else if (navigator.getMedia) {
            navigator.getMedia({
                video: true
            }, function (stream) {
                mediaStreamTrack = stream.getTracks()[0];
                video.src = (window.URL || window.webkitURL).createObjectURL(stream);
                video.play();
            }, function (err) {
                console.log(err);
            });
        }
        //$scope.autoFace自动人脸识别参数控制
        if($scope.autoFace == 1){
            //$scope.funHandle计时器返回一个计时器
            if($scope.funHandle){//如果计时器存在释放计时器
                clearInterval($scope.funHandle);
            }
            //为了防止正在人脸识别中再次发起人脸识别
            $scope.facingFlag = false;
            $scope.funHandle = setInterval(function(){
                if($scope.faceTradeModal == true && $scope.facingFlag == false){
                    $scope.facingFlag = true;
                    $scope.updateFace();
                }
            },$scope.autoFaceSpace);
            //$scope.autoFaceSpace多少秒自动识别一次
        }
    }
    //认证
    $scope.updateFace = function(){
        var canvas = $('#myCanvas')[0],
            context = canvas.getContext('2d'),
            video = $('#myVideo')[0];
        $scope.getFace();
        var dataUrl = canvas.toDataURL('image/png');
        var param = {
            "patientId":$scope.activePatientInfo.patientId,
            "photoBybase641":$scope.currentFaceDate,
            "photoBybase642":dataUrl
        }
        $http.post(Path.getUri("api/drug/face-recognition/check"), param)
            .success(function (data) {
                if($scope.jumpFlag == false) {
                    if (data >= $scope.percentLike) {
                        $scope.faceAuthFlag = true;
                        $http.get(Path.getUri("api/patient-list/save-face-auth?flag=1&visitNo=" + $scope.activePatientInfo.visitNo + "&encounterNo=" + ($scope.faceAuthSource == 3 ? $scope.activePatientInfo.encounterNo : "")))
                            .success(function (data) {
                            });
                            $scope.closeFaceTradeModal();
                    } else {
                        $scope.facingFlag = false;
                        if($scope.autoFace == 0) {
                            hrDialog.dialog(hrDialog.typeEnum.WARN, {message: "认证失败,不是同一个患者!"})
                                .close(function (result) {
                                });
                        }
                    }
                }
                console.log(data);
            })
            .error(function () {
                $scope.facingFlag = false;
                if($scope.autoFace == 0) {
                    hrDialog.dialog(hrDialog.typeEnum.WARN, {message: "头像数据对比失败!"})
                        .close(function (result) {
                            hrProgress.close();
                        });
                }
            });
    }
  • 相关阅读:
    tensorboard的log查看方法
    liunx系统中安装lua以及torch
    maven安装问题解决
    使用git将代码上传到GitHub
    解决引入keras后出现的Using TensorFlow backend的错误
    ubuntu下 pycharm使用andcoda下的tensorflow
    HTTP概览
    c++容器
    C++注意
    Strint类成员
  • 原文地址:https://www.cnblogs.com/ms-grf/p/10939373.html
Copyright © 2011-2022 走看看