aws-php-sdk:是否可以使用php搜索或比较面部

时间:2017-10-13 15:25:09

标签: amazon-s3 amazon-ec2 aws-sdk aws-php-sdk

我已经在S3上使用php上传了图片,现在我想比较/匹配我的S3集合中的给定图像,我用谷歌搜索但没有得到答案,如果可以使用PHP使用PHP在S3集合中搜索面部重新认知。

3 个答案:

答案 0 :(得分:0)

使用compareFaces APi比较存储在S3中的两张图像中存在的脸部。 将一个图像保留为源并以迭代方式传递目标图像。

<强> API:

<?php
    require 'vendor/autoload.php';

    use Aws\Rekognition\RekognitionClient;

    $options = [
        'region'            => 'us-east-1',
        'version'           => '2016-06-27',
    ];

    $client = new RekognitionClient($options);

    $result = $client->compareFaces([
        'SimilarityThreshold' => <float>,
        'SourceImage' => [ 
            'Bytes' => <string || resource || Psr\Http\Message\StreamInterface>,
            'S3Object' => [
                'Bucket' => '<string>',
                'Name' => '<string>',
                'Version' => '<string>',
            ],
        ],
        'TargetImage' => [ 
            'Bytes' => <string || resource || Psr\Http\Message\StreamInterface>,
            'S3Object' => [
                'Bucket' => '<string>',
                'Name' => '<string>',
                'Version' => '<string>',
            ],
        ],
    ]);
?>

如果要在集合中进行搜索(假设您已使用 CreateCollection API创建了一个并且已经在其中编入了索引),那么您可以使用searchFacesByImage API。只需提供目标集合ID (其中包含多个图像索引)以及源图像的 s3位置。响应将包含匹配的所有面,按相似度得分排序。

<强> API:

$result = $client->searchFacesByImage([
    'CollectionId' => '<string>', 
    'FaceMatchThreshold' => <float>,
    'Image' => [ 
        'Bytes' => <string || resource || Psr\Http\Message\StreamInterface>,
        'S3Object' => [
            'Bucket' => '<string>',
            'Name' => '<string>',
            'Version' => '<string>',
        ],
    ],
    'MaxFaces' => <integer>,
]);

答案 1 :(得分:0)

@Madhukar的答案是正确的,但是您需要再多一步来搜索s3存储桶。您需要为存储桶中的面建立索引,如下所示:

$result = $rekog->indexFaces([ 
  'CollectionId' => '<string>', // REQUIRED 
  'ExternalImageId' => <string>, //This is important to know what image the face is in (I use the s3 key) 
  'Image' => [ 
      'S3Object' => [ 
        'Bucket' => '<string>', 
        'Name' => <string>, 
    ], 
  ], 
]);

您需要为集合中的每个图像执行此操作

答案 2 :(得分:0)

感谢@Madhukar,你的建议让我比较来自S3的2张图片,而在搜集收藏中我不得不添加克里斯的建议。谢谢@chris。只有我的问题是我在laravel做,所以我必须做Laravel风格,但核心是你的所有建议。再次感谢你们俩。如果有人想要laravel编码让我知道,如果我能帮忙。