WEB端利用Amazon Rekognition 实现人脸识别

Amazon Rekognition基于相同的经过验证的,高度可扩展的深度学习技术,该技术由Amazon的计算机视觉科学家开发,用于每天分析数十亿张图像和视频。它不需要使用任何机器学习知识。Amazon Rekognition包含一个简单易用的API,可以快速分析Amazon S3中存储的任何图像或视频文件。

这里我们主要使用Amazon Rekognition中的面部检测和面部比较API接口实现操作。首先,我们利用面部检测接口将画面中所有人脸识别出来,接着对识别出的人脸进行遍历,与S3数据桶中存储的人脸信息进行比较,从而取出匹配对象的数据。

  1. 在S3创建一个储存人像信息的数据桶
  2. 在Amazon Cognito创建身份池
  3. 给未经身份验证和经过身份验证的角色设置权限
  4. 在代码引入js
    <script src="./js/aws-sdk-2.48.0.min.js"></script>
  5. 登陆
    function Unauthenticated_Login() {
        AWS.config.region = REGION;//亚马逊账户区域代码
    
        AWS.config.credentials = new AWS.CognitoIdentityCredentials({
            IdentityPoolId: POOL_ID,//身份池ID
        });
    
        AWS.config.credentials.get(function(){
            var accessKeyId = AWS.config.credentials.accessKeyId;
            var secretAccessKey = AWS.config.credentials.secretAccessKey;
            var sessionToken = AWS.config.credentials.sessionToken;
        });
    }
  6. 创建面部识别API接口对象
    rekognition = new AWS.Rekognition();
  7. 调用摄像头
  8. 调用面部识别方法
    var params = {Attributes:["ALL"],Image: {Bytes:dataURItoBlob(dataURL)}};
    rekognition.detectFaces(params, function(err, data) {
    if (err) console.log(err, err.stack);
    }
  9. 遍历面部识别方法返回的人脸数据集合和S3数据桶中的人脸集合,调用面部比较接口和S3数据桶中的人脸信息进行比较
    for(var i=0;i<data.FaceDetails.length;i++){
        var face_height= data.FaceDetails[i].BoundingBox.Height;
        var face_left= data.FaceDetails[i].BoundingBox.Left;
        var face_top= data.FaceDetails[i].BoundingBox.Top;
        var face_width= data.FaceDetails[i].BoundingBox.Width;
        if (face_width<1&&face_top<1&&face_left<1&&face_height<1){
            var face_ctx=facecanvas.getContext('2d');
            face_ctx.drawImage(canvas,320*face_left,320*face_top,320*face_width,320*face_height,0,0,100,100);
            var tmpDataUrl = facecanvas.toDataURL("image/jpeg", 0.8);
            var params = {
    SimilarityThreshold: MIN_SIMILARITY,//相似度
    SourceImage: {Bytes:dataURItoBlob(tmpDataUrl)},
    TargetImage: {
    S3Object: {
    Bucket: BUCKET_NAME,//数据桶名称
    Name: S3_filePath
    }
    }
    };
    rekognition.compareFaces(params, function(err, data) {
    if (err) console.log(err, err.stack);
    } } }

     

 

posted @ 2021-04-19 09:49  蝶花残梦  阅读(383)  评论(0编辑  收藏  举报
Live2D