我是靠谱客的博主 碧蓝奇异果,最近开发中收集的这篇文章主要介绍AWS Rekognition nodejsAPI使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Rekognition是AWS图像识别服务

API 文档: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Rekognition.html
AWS提供网页端测试: https://console.aws.amazon.com/rekognition/home?region=us-east-1#/face-comparison

1 配置AWS Nodejs开发环境

开发环境配置文档:https://docs.aws.amazon.com/zh_cn/sdk-for-javascript/v2/developer-guide/getting-

git clone https://github.com/awslabs/aws-nodejs-sample.git
npm install
配置凭据
[default]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

2 AWS Rekognition API 说明

为了确保Rekognition对象使用这个特定的API,您可以通过将apiVersion选项传递给构造函数来构造对象:

var rekognition = new AWS.Rekognition({apiVersion: '2016-06-27'});
var rekognition = new AWS.Rekognition({region: 'us-east-1'});

区域很重要很重要 你要在提供了Rekognition 的区域

compareFaces API 说明:
compareFaces(params = {}, callback)

参数:

var params = {
  SourceImage: { /* required */
    Bytes: new Buffer('...') || 'STRING_VALUE' /* Strings will be Base-64 encoded on your behalf */,
    S3Object: {
      Bucket: 'STRING_VALUE',
      Name: 'STRING_VALUE',
      Version: 'STRING_VALUE'
    }
  },
  TargetImage: { /* required */
    Bytes: new Buffer('...') || 'STRING_VALUE' /* Strings will be Base-64 encoded on your behalf */,
    S3Object: {
      Bucket: 'STRING_VALUE',
      Name: 'STRING_VALUE',
      Version: 'STRING_VALUE'
    }
  },
  SimilarityThreshold: 0.0
};

参数说明:

SourceImage:输入图像为base64编码的字节或S3对象
    第一种base64编码的图像数据:Bytes (支持Buffer, Typed Array, Blob, String)
    第二种S3Object(map):
        Bucket — (String)
        Name of the S3 bucket. S3存储桶名
        Name — (String)
        S3 object key name.  S3输入图像文件名
        Version — (String)  版本(可省略)
        If the bucket is versioning enabled, you can specify the object version. 
TargetImage 参数同上
SimilarityThreshold(float)
置信度匹配标准(0-100 多少认为是同一个人)

回调函数(回调)
函数(err,data){…}
err: 为null则为成功错误返回错误消息。
data:返回的数据

 data = {
    SourceImageFace: {
            "BoundingBox": {
                "Width": 0.125,
                "Height": 0.125,
                "Left": 0.6494140625,
                "Top": 0.1103515625
            },
            "Confidence": 99.99996948242188
        },

    FaceMatches: [
       {
      Face: {
       BoundingBox: {
        Height: 0.33481481671333313, 
        Left: 0.31888890266418457, 
        Top: 0.4933333396911621, 
        Width: 0.25
       }, 
       Confidence: 99.9991226196289
      }, 
      Similarity: 100
     }
    ], 
    SourceImageFace: {
     BoundingBox: {
      Height: 0.33481481671333313, 
      Left: 0.31888890266418457, 
      Top: 0.4933333396911621, 
      Width: 0.25
     }, 
     Confidence: 99.9991226196289
    }
   }

data数据说明:

SourceImageFace
    原图像用来作为比较物的人脸
    BoundingBox 人脸边框信息
        "Width": 0.125,   边框宽度与整个图像宽度的比例
        "Height": 0.125,  边框高度与整个图像高度的比例
        "Left": 0.6494140625,   边框左边界在图片x轴方向中的比例
        "Top": 0.1103515625    边框上边界在图片y轴方向中的比例
FaceMatches
    目标图像中与源图像相匹配的人脸数组。每个CompareFacesMatch对象提供边界框
    Similarity 面对匹配的信心水平。
    Face 提供脸部元数据(边界框和边界框实际上包含脸部的置信度)。
        BoundingBox 人脸边框数据
        Confidence 是人脸的置信度
        Landmarks 特征值 (眼睛 鼻子 )及相关信息(坐标)
    Pose :脸部姿态 roll yaw pitch 3轴表示
    Quality:
        Brightness 表示脸部亮度的值。该服务返回一个介于0100(含)之间的值。较高的值表示较亮的脸部图像。
    Sharpness:
        代表脸部清晰度的值。该服务返回一个介于0100(含)之间的值。较高的值表示更清晰的脸部图像。
UnmatchedFaces
    数据同上

3 Sample code:

var AWS = require('aws-sdk');
var fs = require("fs");
var rekognition = new AWS.Rekognition({region: 'us-east-1'});
var s3 = new AWS.S3();

  var bitmap = fs.readFileSync("./101g.png");
  var bitmap2 = fs.readFileSync("./102g.png");
  var params1 = {Bucket: "YourBucketName", Key: "101g.png", Body: bitmap};
  s3.putObject(params1, function(err, data) {});
  var params1 = {Bucket: "YourBucketName", Key: "102g.png", Body: bitmap2};
  s3.putObject(params1, function(err, data) {});

  var params = {
      SimilarityThreshold: 85, 
      SourceImage: {
 //       Bytes:bitmap
        S3Object: {
          Bucket: "YourBucketName", 
          Name: "101g.png"
        }
      }, 
      TargetImage: {
   //       Bytes:bitmap2
        S3Object: {
          Bucket: "YourBucketName", 
          Name: "102g.png"
        }
      }
  };

  var startTime = new Date();
  rekognition.compareFaces(params, function(err, data) {
    if (err){ 
        console.log("ERR:"+err); // an error occurred
        console.log("ERRSTACK"+err.stack); // an error occurred
    }
    else{
      var EndTime = new Date();
      var runTime = EndTime.getTime() - startTime.getTime();
      console.log(runTime);           // successful response
      console.info(data);
    }  
  });

性能: 识别时间较长,如果不对图像预处理上传,一般会在4s以上得到结果。

最后

以上就是碧蓝奇异果为你收集整理的AWS Rekognition nodejsAPI使用的全部内容,希望文章能够帮你解决AWS Rekognition nodejsAPI使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部