画像プロパティの検出

画像プロパティ機能は、ドミナント カラーなど、画像の一般的特性を検出します。

ローカル画像での画像プロパティの検出

プロトコル

詳しくは、images:annotate API エンドポイントをご覧ください。

画像プロパティ検出を行うには、POST リクエストを作成し、適切なリクエスト本文を指定します。

POST https://vision.googleapis.com/v1/images:annotate?key=YOUR_API_KEY
{
  "requests": [
    {
      "image": {
        "content": "/9j/7QBEUGhvdG9zaG9...base64-encoded-image-content...fXNWzvDEeYxxxzj/Coa6Bax//Z"
      },
      "features": [
        {
          "type": "IMAGE_PROPERTIES"
        }
      ]
    }
  ]
}

リクエスト本文の構成について詳しくは、AnnotateImageRequest のリファレンス ドキュメントをご覧ください。

リクエストが成功すると、サーバーは 200 OK HTTP ステータス コードと JSON 形式のレスポンスを返します。

{
  "responses": [
    {
      "imagePropertiesAnnotation": {
        "dominantColors": {
          "colors": [
            {
              "color": {
                "red": 69,
                "green": 42,
                "blue": 27
              },
              "score": 0.15197733,
              "pixelFraction": 0.14140345
            },
            {
              "color": {
                "red": 159,
                "green": 193,
                "blue": 252
              },
              "score": 0.12624279,
              "pixelFraction": 0.046971671
            },
            {
              "color": {
                "red": 25,
                "green": 18,
                "blue": 13
              },
              "score": 0.12161674,
              "pixelFraction": 0.15410289
            },
            {
              "color": {
                "red": 120,
                "green": 168,
                "blue": 250
              },
              "score": 0.06179978,
              "pixelFraction": 0.018316509
            },
            {
              "color": {
                "red": 61,
                "green": 46,
                "blue": 28
              },
              "score": 0.068530552,
              "pixelFraction": 0.052263107
            },
            {
              "color": {
                "red": 181,
                "green": 202,
                "blue": 239
              },
              "score": 0.061842542,
              "pixelFraction": 0.030364702
            },
            {
              "color": {
                "red": 131,
                "green": 168,
                "blue": 234
              },
              "score": 0.054366827,
              "pixelFraction": 0.018153695
            },
            {
              "color": {
                "red": 122,
                "green": 162,
                "blue": 249
              },
              "score": 0.039461233,
              "pixelFraction": 0.010827092
            },
            {
              "color": {
                "red": 39,
                "green": 27,
                "blue": 12
              },
              "score": 0.034653772,
              "pixelFraction": 0.02596874
            },
            {
              "color": {
                "red": 51,
                "green": 24,
                "blue": 12
              },
              "score": 0.033614498,
              "pixelFraction": 0.024991859
            }
          ]
        }
      }
    }
  ]
}

C#

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

// Load an image from a local file.
var image = Image.FromFile(filePath);
var client = ImageAnnotatorClient.Create();
var response = client.DetectImageProperties(image);
string header = "Red\tGreen\tBlue\tAlpha\n";
foreach (var color in response.DominantColors.Colors)
{
    Console.Write(header);
    header = "";
    Console.WriteLine("{0}\t{0}\t{0}\t{0}",
        color.Color.Red, color.Color.Green, color.Color.Blue,
        color.Color.Alpha);
}

Go

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

// detectProperties gets image properties from the Vision API for an image at the given file path.
func detectProperties(w io.Writer, file string) error {
	ctx := context.Background()

	client, err := vision.NewImageAnnotatorClient(ctx)
	if err != nil {
		return err
	}

	f, err := os.Open(file)
	if err != nil {
		return err
	}
	defer f.Close()

	image, err := vision.NewImageFromReader(f)
	if err != nil {
		return err
	}
	props, err := client.DetectImageProperties(ctx, image, nil)
	if err != nil {
		return err
	}

	fmt.Fprintln(w, "Dominant colors:")
	for _, quantized := range props.DominantColors.Colors {
		color := quantized.Color
		r := int(color.Red) & 0xff
		g := int(color.Green) & 0xff
		b := int(color.Blue) & 0xff
		fmt.Fprintf(w, "%2.1f%% - #%02x%02x%02x\n", quantized.PixelFraction*100, r, g, b)
	}

	return nil
}

Java

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

public static void detectProperties(String filePath, PrintStream out) throws Exception,
    IOException {
  List<AnnotateImageRequest> requests = new ArrayList<>();

  ByteString imgBytes = ByteString.readFrom(new FileInputStream(filePath));

  Image img = Image.newBuilder().setContent(imgBytes).build();
  Feature feat = Feature.newBuilder().setType(Type.IMAGE_PROPERTIES).build();
  AnnotateImageRequest request =
      AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(img).build();
  requests.add(request);

  try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
    BatchAnnotateImagesResponse response = client.batchAnnotateImages(requests);
    List<AnnotateImageResponse> responses = response.getResponsesList();

    for (AnnotateImageResponse res : responses) {
      if (res.hasError()) {
        out.printf("Error: %s\n", res.getError().getMessage());
        return;
      }

      // For full list of available annotations, see http://g.co/cloud/vision/docs
      DominantColorsAnnotation colors = res.getImagePropertiesAnnotation().getDominantColors();
      for (ColorInfo color : colors.getColorsList()) {
        out.printf(
            "fraction: %f\nr: %f, g: %f, b: %f\n",
            color.getPixelFraction(),
            color.getColor().getRed(),
            color.getColor().getGreen(),
            color.getColor().getBlue());
      }
    }
  }
}

Node.js

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

const vision = require('@google-cloud/vision');

// Creates a client
const client = new vision.ImageAnnotatorClient();

/**
 * TODO(developer): Uncomment the following line before running the sample.
 */
// const fileName = 'Local image file, e.g. /path/to/image.png';

// Performs property detection on the local file
client
  .imageProperties(fileName)
  .then(results => {
    const properties = results[0].imagePropertiesAnnotation;
    const colors = properties.dominantColors.colors;
    colors.forEach(color => console.log(color));
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

PHP

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

namespace Google\Cloud\Samples\Vision;

use Google\Cloud\Vision\V1\ImageAnnotatorClient;

// $path = 'path/to/your/image.jpg'

function detect_image_property($path)
{
    $imageAnnotator = new ImageAnnotatorClient();

    # annotate the image
    $image = file_get_contents($path);
    $response = $imageAnnotator->imagePropertiesDetection($image);
    $props = $response->getImagePropertiesAnnotation();

    print("Properties:" . PHP_EOL);
    foreach ($props->getDominantColors()->getColors() as $colorInfo) {
        printf("Fraction: %s" . PHP_EOL, $colorInfo->getPixelFraction());
        $color = $colorInfo->getColor();
        printf("Red: %s" . PHP_EOL, $color->getRed());
        printf("Green: %s" . PHP_EOL, $color->getGreen());
        printf("Blue: %s" . PHP_EOL, $color->getBlue());
        print(PHP_EOL);
    }
}

Python

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

def detect_properties(path):
    """Detects image properties in the file."""
    client = vision.ImageAnnotatorClient()

    with io.open(path, 'rb') as image_file:
        content = image_file.read()

    image = vision.types.Image(content=content)

    response = client.image_properties(image=image)
    props = response.image_properties_annotation
    print('Properties:')

    for color in props.dominant_colors.colors:
        print('fraction: {}'.format(color.pixel_fraction))
        print('\tr: {}'.format(color.color.red))
        print('\tg: {}'.format(color.color.green))
        print('\tb: {}'.format(color.color.blue))
        print('\ta: {}'.format(color.color.alpha))

Ruby

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

# project_id = "Your Google Cloud project ID"
# image_path = "Path to local image file, eg. './image.png'"

require "google/cloud/vision"

vision = Google::Cloud::Vision.new project: project_id
image  = vision.image image_path

image.properties.colors.each do |color|
  puts "Color #{color.red}, #{color.green}, #{color.blue}"
end

リモート画像での画像プロパティの検出

Vision API は、Google Cloud Storage またはウェブに存在する画像ファイルに対して直接画像プロパティ検出を実行できるようになっています。その画像ファイルの内容をリクエストの本文に入れて送信する必要はありません。

プロトコル

詳しくは、images:annotate API エンドポイントをご覧ください。

画像プロパティ検出を行うには、POST リクエストを作成し、適切なリクエスト本文を指定します。

POST https://vision.googleapis.com/v1/images:annotate?key=YOUR_API_KEY
{
  "requests": [
    {
      "image": {
        "source": {
          "gcsImageUri": "gs://YOUR_BUCKET_NAME/YOUR_FILE_NAME"
        }
      },
      "features": [
        {
          "type": "IMAGE_PROPERTIES"
        }
      ]
    }
  ]
}

リクエスト本文の構成について詳しくは、AnnotateImageRequest のリファレンス ドキュメントをご覧ください。

リクエストが成功すると、サーバーは 200 OK HTTP ステータス コードと JSON 形式のレスポンスを返します。

{
  "responses": [
    {
      "imagePropertiesAnnotation": {
        "dominantColors": {
          "colors": [
            {
              "color": {
                "red": 69,
                "green": 42,
                "blue": 27
              },
              "score": 0.15197733,
              "pixelFraction": 0.14140345
            },
            {
              "color": {
                "red": 159,
                "green": 193,
                "blue": 252
              },
              "score": 0.12624279,
              "pixelFraction": 0.046971671
            },
            {
              "color": {
                "red": 25,
                "green": 18,
                "blue": 13
              },
              "score": 0.12161674,
              "pixelFraction": 0.15410289
            },
            {
              "color": {
                "red": 120,
                "green": 168,
                "blue": 250
              },
              "score": 0.06179978,
              "pixelFraction": 0.018316509
            },
            {
              "color": {
                "red": 61,
                "green": 46,
                "blue": 28
              },
              "score": 0.068530552,
              "pixelFraction": 0.052263107
            },
            {
              "color": {
                "red": 181,
                "green": 202,
                "blue": 239
              },
              "score": 0.061842542,
              "pixelFraction": 0.030364702
            },
            {
              "color": {
                "red": 131,
                "green": 168,
                "blue": 234
              },
              "score": 0.054366827,
              "pixelFraction": 0.018153695
            },
            {
              "color": {
                "red": 122,
                "green": 162,
                "blue": 249
              },
              "score": 0.039461233,
              "pixelFraction": 0.010827092
            },
            {
              "color": {
                "red": 39,
                "green": 27,
                "blue": 12
              },
              "score": 0.034653772,
              "pixelFraction": 0.02596874
            },
            {
              "color": {
                "red": 51,
                "green": 24,
                "blue": 12
              },
              "score": 0.033614498,
              "pixelFraction": 0.024991859
            }
          ]
        }
      }
    }
  ]
}

C#

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

// Specify a Google Cloud Storage uri for the image
// or a publicly accessible HTTP or HTTPS uri.
var image = Image.FromUri(uri);
var client = ImageAnnotatorClient.Create();
var response = client.DetectImageProperties(image);
string header = "Red\tGreen\tBlue\tAlpha\n";
foreach (var color in response.DominantColors.Colors)
{
    Console.Write(header);
    header = "";
    Console.WriteLine("{0}\t{0}\t{0}\t{0}",
        color.Color.Red, color.Color.Green, color.Color.Blue,
        color.Color.Alpha);
}

Go

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

// detectProperties gets image properties from the Vision API for an image at the given file path.
func detectPropertiesURI(w io.Writer, file string) error {
	ctx := context.Background()

	client, err := vision.NewImageAnnotatorClient(ctx)
	if err != nil {
		return err
	}

	image := vision.NewImageFromURI(file)
	props, err := client.DetectImageProperties(ctx, image, nil)
	if err != nil {
		return err
	}

	fmt.Fprintln(w, "Dominant colors:")
	for _, quantized := range props.DominantColors.Colors {
		color := quantized.Color
		r := int(color.Red) & 0xff
		g := int(color.Green) & 0xff
		b := int(color.Blue) & 0xff
		fmt.Fprintf(w, "%2.1f%% - #%02x%02x%02x\n", quantized.PixelFraction*100, r, g, b)
	}

	return nil
}

Java

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

public static void detectPropertiesGcs(String gcsPath, PrintStream out) throws Exception,
    IOException {
  List<AnnotateImageRequest> requests = new ArrayList<>();

  ImageSource imgSource = ImageSource.newBuilder().setGcsImageUri(gcsPath).build();
  Image img = Image.newBuilder().setSource(imgSource).build();
  Feature feat = Feature.newBuilder().setType(Type.IMAGE_PROPERTIES).build();
  AnnotateImageRequest request =
      AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(img).build();
  requests.add(request);

  try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
    BatchAnnotateImagesResponse response = client.batchAnnotateImages(requests);
    List<AnnotateImageResponse> responses = response.getResponsesList();

    for (AnnotateImageResponse res : responses) {
      if (res.hasError()) {
        out.printf("Error: %s\n", res.getError().getMessage());
        return;
      }

      // For full list of available annotations, see http://g.co/cloud/vision/docs
      DominantColorsAnnotation colors = res.getImagePropertiesAnnotation().getDominantColors();
      for (ColorInfo color : colors.getColorsList()) {
        out.printf(
            "fraction: %f\nr: %f, g: %f, b: %f\n",
            color.getPixelFraction(),
            color.getColor().getRed(),
            color.getColor().getGreen(),
            color.getColor().getBlue());
      }
    }
  }
}

Node.js

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

// Imports the Google Cloud client libraries
const vision = require('@google-cloud/vision');

// Creates a client
const client = new vision.ImageAnnotatorClient();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Bucket where the file resides, e.g. my-bucket';
// const fileName = 'Path to file within bucket, e.g. path/to/image.png';

// Performs property detection on the gcs file
client
  .imageProperties(`gs://${bucketName}/${fileName}`)
  .then(results => {
    const properties = results[0].imagePropertiesAnnotation;
    const colors = properties.dominantColors.colors;
    colors.forEach(color => console.log(color));
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

PHP

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

namespace Google\Cloud\Samples\Vision;

use Google\Cloud\Vision\V1\ImageAnnotatorClient;

// $path = 'gs://path/to/your/image.jpg'

function detect_image_property_gcs($path)
{
    $imageAnnotator = new ImageAnnotatorClient();

    # annotate the image
    $response = $imageAnnotator->imagePropertiesDetection($path);
    $props = $response->getImagePropertiesAnnotation();

    if ($props) {
        print("Properties:" . PHP_EOL);
        foreach ($props->getDominantColors()->getColors() as $colorInfo) {
            printf("Fraction: %s" . PHP_EOL, $colorInfo->getPixelFraction());
            $color = $colorInfo->getColor();
            printf("Red: %s" . PHP_EOL, $color->getRed());
            printf("Green: %s" . PHP_EOL, $color->getGreen());
            printf("Blue: %s" . PHP_EOL, $color->getBlue());
            print(PHP_EOL);
        }
    } else {
        print('No Results.' . PHP_EOL);
    }
}

Python

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

def detect_properties_uri(uri):
    """Detects image properties in the file located in Google Cloud Storage or
    on the Web."""
    client = vision.ImageAnnotatorClient()
    image = vision.types.Image()
    image.source.image_uri = uri

    response = client.image_properties(image=image)
    props = response.image_properties_annotation
    print('Properties:')

    for color in props.dominant_colors.colors:
        print('frac: {}'.format(color.pixel_fraction))
        print('\tr: {}'.format(color.color.red))
        print('\tg: {}'.format(color.color.green))
        print('\tb: {}'.format(color.color.blue))
        print('\ta: {}'.format(color.color.alpha))

Ruby

Vision API クライアントのインストールと作成の詳細については、Vision API クライアント ライブラリをご覧ください。

# project_id = "Your Google Cloud project ID"
# image_path = "Google Cloud Storage URI, eg. 'gs://my-bucket/image.png'"

require "google/cloud/vision"

vision = Google::Cloud::Vision.new project: project_id
image  = vision.image image_path

image.properties.colors.each do |color|
  puts "Color #{color.red}, #{color.green}, #{color.blue}"
end

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Vision API ドキュメント