Détecter des propriétés des images

La fonctionnalité Propriétés d'image détecte les caractéristiques générales de l'image, telles que la couleur dominante.

Détecter les propriétés d'image dans une image locale

Protocole

Reportez-vous au point de terminaison de l'API images:annotate pour obtenir des informations complètes à ce sujet.

Pour lancer une détection des propriétés d'image, exécutez une requête POST et spécifiez le corps de requête approprié comme suit :

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"
        }
      ]
    }
  ]
}

Pour en savoir plus sur la configuration du corps de la requête, consultez la documentation de référence sur AnnotateImageRequest.

Si la requête aboutit, le serveur renvoie un code d'état HTTP 200 OK et la réponse au format 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#

Avant d'essayer cet exemple, suivez les instructions de configuration pour C# du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour plus d'informations, consultez la documentation de référence de l'API Vision en langage C#.

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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour plus d'informations, consultez la documentation de référence de l'API Vision en langage Go.


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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vision en langage Java.

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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vision en langage Node.js.

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
const [result] = await client.imageProperties(fileName);
const colors = result.imagePropertiesAnnotation.dominantColors.colors;
colors.forEach(color => console.log(color));

PHP

Avant d'essayer cet exemple, suivez les instructions de configuration pour PHP du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vision en langage PHP.

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

    $imageAnnotator->close();
}

Python

Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vision en langage Python.

def detect_properties(path):
    """Detects image properties in the file."""
    from google.cloud import vision
    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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vision en langage Ruby.

# image_path = "Path to local image file, eg. './image.png'"

require "google/cloud/vision"

image_annotator = Google::Cloud::Vision::ImageAnnotator.new

response = image_annotator.image_properties_detection image: image_path

response.responses.each do |res|
  res.image_properties_annotation.dominant_colors.colors.each do |color_info|
    color = color_info.color
    puts "Color #{color.red}, #{color.green}, #{color.blue}"
  end
end

Détecter les propriétés d'image dans une image distante

Pour votre commodité, Vision peut exécuter la détection des propriétés d'image directement sur un fichier image situé dans Google Cloud Storage ou sur le Web, sans qu'il soit nécessaire d'envoyer le contenu de ce fichier dans le corps de la requête.

Protocole

Reportez-vous au point de terminaison de l'API images:annotate pour obtenir des informations complètes à ce sujet.

Pour lancer une détection des propriétés d'image, exécutez une requête POST et spécifiez le corps de requête approprié comme suit :

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"
        }
      ]
    }
  ]
}

Pour en savoir plus sur la configuration du corps de la requête, consultez la documentation de référence sur AnnotateImageRequest.

Si la requête aboutit, le serveur renvoie un code d'état HTTP 200 OK et la réponse au format 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#

Avant d'essayer cet exemple, suivez les instructions de configuration pour C# du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour plus d'informations, consultez la documentation de référence de l'API Vision en langage C#.

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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour plus d'informations, consultez la documentation de référence de l'API Vision en langage Go.


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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vision en langage Java.

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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vision en langage Node.js.

// 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
const [result] = await client.imageProperties(
  `gs://${bucketName}/${fileName}`
);
const colors = result.imagePropertiesAnnotation.dominantColors.colors;
colors.forEach(color => console.log(color));

PHP

Avant d'essayer cet exemple, suivez les instructions de configuration pour PHP du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vision en langage PHP.

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

    $imageAnnotator->close();
}

Python

Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vision en langage Python.

def detect_properties_uri(uri):
    """Detects image properties in the file located in Google Cloud Storage or
    on the Web."""
    from google.cloud import vision
    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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby du guide de démarrage rapide de Vision avec les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vision en langage Ruby.

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

require "google/cloud/vision"

image_annotator = Google::Cloud::Vision::ImageAnnotator.new

response = image_annotator.image_properties_detection image: image_path

response.responses.each do |res|
  res.image_properties_annotation.dominant_colors.colors.each do |color_info|
    color = color_info.color
    puts "Color #{color.red}, #{color.green}, #{color.blue}"
  end
end

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Cloud Vision API Documentation
Besoin d'aide ? Consultez notre page d'assistance.