Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Analyse d’une image chargée à partir d’un système de fichiers local
Les opérations Image Amazon Rekognition peuvent analyser les images fournies sous forme d’octets d’image ou les images stockées dans un compartiment Amazon S3.
Ces rubriques proposent des exemples où des octets d’image sont fournis aux opérations d’API Image Amazon Rekognition en utilisant un fichier chargé à partir d’un système de fichiers local. Pour transmettre des octets d’image à une opération d’API Amazon Rekognition, vous utilisez le paramètre d’entrée Image. Dans Image
, vous spécifiez la propriété Bytes
pour transmettre des octets d’image encodés en base64.
Les octets d’image transmis à une opération d’API Amazon Rekognition à l’aide du paramètre d’entrée Bytes
doivent être encodés en base64. Les kits AWS SDK utilisés dans ces exemples encodent automatiquement les images en base64. Vous n’avez pas besoin de coder les octets d’image avant d’appeler une opération d’API Amazon Rekognition. Pour plus d’informations, consultez Spécifications d’images.
Dans cet exemple de demande JSON DetectLabels
, les octets d’image source sont transmis dans le paramètre d’entrée Bytes
.
{
"Image": {
"Bytes": "/9j/4AAQSk....."
},
"MaxLabels": 10,
"MinConfidence": 77
}
Les exemples suivants utilisent différents AWS SDK et le AWS CLI to callDetectLabels
. Pour en savoir plus sur la réponse d’opération DetectLabels
, consultez DetectLabels réponse.
Pour un JavaScript exemple côté client, voir. En utilisant JavaScript
Pour détecter des étiquettes dans une image locale
Si vous ne l’avez pas déjà fait :
Créez ou mettez à jour un utilisateur avec AmazonRekognitionFullAccess
et autorisations AmazonS3ReadOnlyAccess
. Pour plus d’informations, consultez Étape 1 : configurer un compte AWS et créer un utilisateur.
Installez et configurez AWS CLI les AWS SDK. Pour plus d’informations, consultez Étape 2 : configurer les AWS SDK AWS CLI et.
Utilisez les exemples suivants pour appeler l’opération DetectLabels
.
- Java
-
L’exemple Java suivant montre comment charger une image à partir du système de fichiers local et comment détecter les étiquettes à l’aide de l’opération detectLabels de l'AWS SDK. Remplacez la valeur de photo
par le chemin et le nom d’un fichier image (au format .jpg ou .png).
//Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
package aws.example.rekognition.image;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.util.List;
import com.amazonaws.services.rekognition.AmazonRekognition;
import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
import com.amazonaws.AmazonClientException;
import com.amazonaws.services.rekognition.model.AmazonRekognitionException;
import com.amazonaws.services.rekognition.model.DetectLabelsRequest;
import com.amazonaws.services.rekognition.model.DetectLabelsResult;
import com.amazonaws.services.rekognition.model.Image;
import com.amazonaws.services.rekognition.model.Label;
import com.amazonaws.util.IOUtils;
public class DetectLabelsLocalFile {
public static void main(String[] args) throws Exception {
String photo="input.jpg";
ByteBuffer imageBytes;
try (InputStream inputStream = new FileInputStream(new File(photo))) {
imageBytes = ByteBuffer.wrap(IOUtils.toByteArray(inputStream));
}
AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
DetectLabelsRequest request = new DetectLabelsRequest()
.withImage(new Image()
.withBytes(imageBytes))
.withMaxLabels(10)
.withMinConfidence(77F);
try {
DetectLabelsResult result = rekognitionClient.detectLabels(request);
List <Label> labels = result.getLabels();
System.out.println("Detected labels for " + photo);
for (Label label: labels) {
System.out.println(label.getName() + ": " + label.getConfidence().toString());
}
} catch (AmazonRekognitionException e) {
e.printStackTrace();
}
}
}
- Python
-
L’exemple AWS SDK pour Python suivant montre comment charger une image à partir du système de fichiers local et comment appeler l’opération detect_labels. Remplacez la valeur de photo
par le chemin et le nom d’un fichier image (au format .jpg ou .png).
#Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
#PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
import boto3
def detect_labels_local_file(photo):
client=boto3.client('rekognition')
with open(photo, 'rb') as image:
response = client.detect_labels(Image={'Bytes': image.read()})
print('Detected labels in ' + photo)
for label in response['Labels']:
print (label['Name'] + ' : ' + str(label['Confidence']))
return len(response['Labels'])
def main():
photo='photo'
label_count=detect_labels_local_file(photo)
print("Labels detected: " + str(label_count))
if __name__ == "__main__":
main()
- .NET
-
L’exemple suivant montre comment charger une image à partir du système de fichiers local et détecter les étiquettes à l’aide de l’opération DetectLabels
. Remplacez la valeur de photo
par le chemin et le nom d’un fichier image (au format .jpg ou .png).
//Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
using System;
using System.IO;
using Amazon.Rekognition;
using Amazon.Rekognition.Model;
public class DetectLabelsLocalfile
{
public static void Example()
{
String photo = "input.jpg";
Amazon.Rekognition.Model.Image image = new Amazon.Rekognition.Model.Image();
try
{
using (FileStream fs = new FileStream(photo, FileMode.Open, FileAccess.Read))
{
byte[] data = null;
data = new byte[fs.Length];
fs.Read(data, 0, (int)fs.Length);
image.Bytes = new MemoryStream(data);
}
}
catch (Exception)
{
Console.WriteLine("Failed to load file " + photo);
return;
}
AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
DetectLabelsRequest detectlabelsRequest = new DetectLabelsRequest()
{
Image = image,
MaxLabels = 10,
MinConfidence = 77F
};
try
{
DetectLabelsResponse detectLabelsResponse = rekognitionClient.DetectLabels(detectlabelsRequest);
Console.WriteLine("Detected labels for " + photo);
foreach (Label label in detectLabelsResponse.Labels)
Console.WriteLine("{0}: {1}", label.Name, label.Confidence);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
- PHP
L'exemple de SDK AWS pour PHP suivant montre comment charger une image depuis le système de fichiers local et appeler DetectFacesl'opération d'API. Remplacez la valeur de photo
par le chemin et le nom d’un fichier image (au format .jpg ou .png).
<?php
//Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
require 'vendor/autoload.php';
use Aws\Rekognition\RekognitionClient;
$options = [
'region' => 'us-west-2',
'version' => 'latest'
];
$rekognition = new RekognitionClient($options);
// Get local image
$photo = 'input.jpg';
$fp_image = fopen($photo, 'r');
$image = fread($fp_image, filesize($photo));
fclose($fp_image);
// Call DetectFaces
$result = $rekognition->DetectFaces(array(
'Image' => array(
'Bytes' => $image,
),
'Attributes' => array('ALL')
)
);
// Display info for each detected person
print 'People: Image position and estimated age' . PHP_EOL;
for ($n=0;$n<sizeof($result['FaceDetails']); $n++){
print 'Position: ' . $result['FaceDetails'][$n]['BoundingBox']['Left'] . " "
. $result['FaceDetails'][$n]['BoundingBox']['Top']
. PHP_EOL
. 'Age (low): '.$result['FaceDetails'][$n]['AgeRange']['Low']
. PHP_EOL
. 'Age (high): ' . $result['FaceDetails'][$n]['AgeRange']['High']
. PHP_EOL . PHP_EOL;
}
?>
- Ruby
Cet exemple affiche la liste des étiquettes qui ont été détectées dans l’image d’entrée. Remplacez la valeur de photo
par le chemin et le nom d’un fichier image (au format .jpg ou .png).
#Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
#PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
# gem 'aws-sdk-rekognition'
require 'aws-sdk-rekognition'
credentials = Aws::Credentials.new(
ENV['AWS_ACCESS_KEY_ID'],
ENV['AWS_SECRET_ACCESS_KEY']
)
client = Aws::Rekognition::Client.new credentials: credentials
photo = 'photo.jpg'
path = File.expand_path(photo) # expand path relative to the current directory
file = File.read(path)
attrs = {
image: {
bytes: file
},
max_labels: 10
}
response = client.detect_labels attrs
puts "Detected labels for: #{photo}"
response.labels.each do |label|
puts "Label: #{label.name}"
puts "Confidence: #{label.confidence}"
puts "Instances:"
label['instances'].each do |instance|
box = instance['bounding_box']
puts " Bounding box:"
puts " Top: #{box.top}"
puts " Left: #{box.left}"
puts " Width: #{box.width}"
puts " Height: #{box.height}"
puts " Confidence: #{instance.confidence}"
end
puts "Parents:"
label.parents.each do |parent|
puts " #{parent.name}"
end
puts "------------"
puts ""
end
- Java V2
-
Ce code est extrait du GitHub référentiel d'exemples du SDK de AWS documentation. Voir l’exemple complet ici.
import software.amazon.awssdk.core.SdkBytes;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.rekognition.RekognitionClient;
import software.amazon.awssdk.services.rekognition.model.Image;
import software.amazon.awssdk.services.rekognition.model.DetectLabelsRequest;
import software.amazon.awssdk.services.rekognition.model.DetectLabelsResponse;
import software.amazon.awssdk.services.rekognition.model.Label;
import software.amazon.awssdk.services.rekognition.model.RekognitionException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.List;
/**
* Before running this Java V2 code example, set up your development
* environment, including your credentials.
*
* For more information, see the following documentation topic:
*
* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
*/
public class DetectLabels {
public static void main(String[] args) {
final String usage = """
Usage: <sourceImage>
Where:
sourceImage - The path to the image (for example, C:\\AWS\\pic1.png).\s
""";
if (args.length != 1) {
System.out.println(usage);
System.exit(1);
}
String sourceImage = args[0];
Region region = Region.US_EAST_1;
RekognitionClient rekClient = RekognitionClient.builder()
.region(region)
.build();
detectImageLabels(rekClient, sourceImage);
rekClient.close();
}
public static void detectImageLabels(RekognitionClient rekClient, String sourceImage) {
try {
InputStream sourceStream = new FileInputStream(sourceImage);
SdkBytes sourceBytes = SdkBytes.fromInputStream(sourceStream);
// Create an Image object for the source image.
Image souImage = Image.builder()
.bytes(sourceBytes)
.build();
DetectLabelsRequest detectLabelsRequest = DetectLabelsRequest.builder()
.image(souImage)
.maxLabels(10)
.build();
DetectLabelsResponse labelsResponse = rekClient.detectLabels(detectLabelsRequest);
List<Label> labels = labelsResponse.labels();
System.out.println("Detected labels for the given photo");
for (Label label : labels) {
System.out.println(label.name() + ": " + label.confidence().toString());
}
} catch (RekognitionException | FileNotFoundException e) {
System.out.println(e.getMessage());
System.exit(1);
}
}
}