我已经在S3上使用php上传了图片,现在我想比较/匹配我的S3集合中的给定图像,我用谷歌搜索但没有得到答案,如果可以使用PHP使用PHP在S3集合中搜索面部重新认知。
答案 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编码让我知道,如果我能帮忙。