ローカルファイルシステムからロードされたイメージの分析 - Amazon Rekognition

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ローカルファイルシステムからロードされたイメージの分析

Amazon REKognition Image オペレーションは、イメージのバイトとして提供されたイメージ、または Amazon S3 バケットに保存されたイメージを分析できます。

以下のトピックでは、ローカルファイルシステムからロードしたファイルを使用して、Amazon REKognition Image API オペレーションにイメージのバイトを渡す例を示します。イメージのバイトを Amazon Rekognition API オペレーションに渡すには、 Image 入力パラメータ。Image 内で Bytes プロパティを指定し、base64 エンコードされたイメージのバイトを渡します。

Amazon Rekognition API オペレーションに渡されるイメージのバイトは、Bytes入力パラメータは base64 でエンコードされている必要があります。以下の例で使用する AWS SDK では、イメージを自動的に base64 でエンコードします。Amazon REKognition API オペレーションを呼び出す前にイメージのバイトをエンコードする必要はありません。詳細については、「イメージの仕様」を参照してください。

次の DetectLabels に対する JSON リクエストの例では、ソースイメージのバイトを Bytes 入力パラメータで渡します。

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

以下の例では、さまざまな AWS SDK と AWS CLI を使用して DetectLabels を呼び出します。DetectLabels オペレーションからのレスポンスの詳細については、「DetectLabels レスポンス」を参照してください。

クライアント側の JavaScript の例については、「JavaScript を使用する」を参照してください。

ローカルイメージ内のラベルを検出するには

  1. まだ実行していない場合:

    1. IAM ユーザーを作成または更新するAmazonRekognitionFullAccessおよびAmazonS3ReadOnlyAccessアクセス許可。詳細については、「ステップ 1: AWS アカウントをセットアップして IAM ユーザーを作成する」を参照してください。

    2. AWS CLI と AWS SDK をインストールして設定します。詳細については、「ステップ 2: をセットアップするAWS CLIおよびAWSSDK」を参照してください。

  2. 以下の例を使用して、DetectLabels オペレーションを呼び出します。

    Java

    次の Java の例では、ローカルファイルシステムからイメージをロードし、detectLabels AWS SDK オペレーションを使用してラベルを検出する方法を示します。photo の値は、イメージファイル (.jpg 形式または .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

    次の AWS SDK for Python の例では、ローカルファイルシステムからイメージをロードし、detect_labels オペレーションを呼び出す方法を示します。photo の値は、イメージファイル (.jpg 形式または .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

    次の の例では、ローカルファイルシステムからイメージをロードし、DetectLabels オペレーションを使用してラベルを検出する方法を示します。photo の値は、イメージファイル (.jpg 形式または .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

    次の AWS SDK for PHP の例では、ローカルファイルシステムからイメージをロードし、DetectFaces API オペレーションを呼び出します。photo の値は、イメージファイル (.jpg 形式または .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

    この例では、入力イメージ内で検出されたラベルのリストを表示します。photo の値は、イメージファイル (.jpg 形式または .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

    このコードはAWSドキュメンテーション SDK の例 GitHub リポジトリ。完全な例を参照してくださいここ:

    public static void detectImageLabels(RekognitionClient rekClient, String sourceImage) { try { InputStream sourceStream = new URL("https://images.unsplash.com/photo-1557456170-0cf4f4d0d362?ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8bGFrZXxlbnwwfHwwfHw%3D&ixlib=rb-1.2.1&w=1000&q=80").openStream(); // 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 | MalformedURLException e) { System.out.println(e.getMessage()); System.exit(1); } catch (IOException e) { e.printStackTrace(); } }