Analysieren eines aus einem lokalen Dateisystem geladenen Bildes - Amazon Rekognition

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Analysieren eines aus einem lokalen Dateisystem geladenen Bildes

Amazon-Rekognition-Image-Operationen können Bilder analysieren, die als Bild-Bytes oder in einem Amazon-S3-Bucket gespeichert sind.

In diesen Themen finden Sie Beispiele, wie Sie Bild-Bytes an Amazon-Rekognition-Image-API-Operationen übertragen können, indem Sie eine Datei verwenden, die aus einem lokalen Dateisystem geladen wird. Sie übergeben Bild-Bytes an eine Amazon-Rekognition-API-Operation, indem Sie den Eingabeparameter Bild verwenden. Innerhalb von Image geben Sie die Eigenschaft Bytes zum Übergeben von base64-codierten Bild-Bytes an.

Bild-Bytes, die an eine Amazon-Rekognition-API-Operation mit dem Eingabeparameter Bytes übergeben werden, müssen base64-codiert sein. Die AWS-SDKs, die diese Beispiele verwenden, verwenden automatisch mit base64 codierte Bilder. Sie müssen vor dem Aufruf einer Amazon-Rekognition-API-Operation keine Bild-Bytes codieren. Weitere Informationen finden Sie unter Bildspezifikationen.

In diesem Beispiel einer JSON-Anforderung für DetectLabels werden die Quellbild-Bytes im Bytes-Eingabeparameter übergeben.

{ "Image": { "Bytes": "/9j/4AAQSk....." }, "MaxLabels": 10, "MinConfidence": 77 }

In den folgenden Beispielen werden verschiedene AWS SDKs und der AWS CLI To-Aufruf DetectLabels verwendet. Informationen über die Antwort auf die Operation DetectLabels finden Sie unter DetectLabels Antwort.

Ein clientseitiges JavaScript Beispiel finden Sie unter. Verwenden JavaScript

So erkennen Sie Labels in einem lokalen Bild
  1. Wenn Sie dies noch nicht getan haben:

    1. Erstellen oder aktualisieren Sie einen Benutzer mit AmazonRekognitionFullAccess- und AmazonS3ReadOnlyAccess-Berechtigungen. Weitere Informationen finden Sie unter Schritt 1: Einrichten eines AWS-Kontos und Erstellen eines Benutzers.

    2. Installieren und konfigurieren Sie die AWS CLI und die SDKs AWS . Weitere Informationen finden Sie unter Schritt 2: Richten Sie die AWS CLI und AWS SDKs ein.

  2. Verwenden Sie die folgenden Beispiele zum Aufrufen der DetectLabels-Operation.

    Java

    Das folgende Java-Beispiel zeigt, wie Sie ein Bild aus dem lokalen Dateisystem laden und Labels mithilfe der AWS-SDK-Operation detectLabels erkennen. Ändern Sie den Wert von photo in den Pfad und Dateinamen einer Bilddatei (JPG- oder PNG-Format).

    //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

    Das folgende AWS-SDK für Python-Beispiel zeigt, wie Sie ein Bild aus dem lokalen Dateisystem laden und die Operation detect_labels aufrufen. Ändern Sie den Wert von photo in den Pfad und Dateinamen einer Bilddatei (JPG- oder PNG-Format).

    #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

    Das folgende Beispiel veranschaulicht, wie Sie ein Bild aus dem lokalen Dateisystem laden und Labels mithilfe der Operation DetectLabels erkennen. Ändern Sie den Wert von photo in den Pfad und Dateinamen einer Bilddatei (JPG- oder PNG-Format).

    //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

    Das folgende Beispiel für ein AWS SDK for PHP zeigt, wie ein Bild aus dem lokalen Dateisystem geladen und die DetectFacesAPI-Operation aufgerufen wird. Ändern Sie den Wert von photo in den Pfad und Dateinamen einer Bilddatei (JPG- oder PNG-Format).

    <?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

    Dieses Beispiel zeigt eine Liste von Labels an, die auf dem Eingabebild erkannt wurden. Ändern Sie den Wert von photo in den Pfad und Dateinamen einer Bilddatei (JPG- oder PNG-Format).

    #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

    Dieser Code stammt aus dem AWS Documentation SDK Examples GitHub Repository. Das vollständige Beispiel finden Sie hier.

    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); } } }