A funcionalidade Propriedades da imagem deteta atributos gerais da imagem, como a cor dominante.

Cores dominantes detetadas:

Pedidos de deteção de propriedades de imagens
Configure o seu Google Cloud projeto e autenticação
Se não tiver criado um Google Cloud projeto, faça-o agora. Expanda esta secção para ver instruções.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vision API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vision API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
- BASE64_ENCODED_IMAGE: a representação base64 (string ASCII) dos dados da imagem binária. Esta string deve ser semelhante à
seguinte string:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- RESULTS_INT: (Opcional) Um valor inteiro de resultados a
devolver. Se omitir o campo
"maxResults"
e o respetivo valor, a API devolve o valor predefinido de 10 resultados. Este campo não se aplica aos seguintes tipos de elementos:TEXT_DETECTION
,DOCUMENT_TEXT_DETECTION
ouCROP_HINTS
. - PROJECT_ID: o ID do seu Google Cloud projeto.
- CLOUD_STORAGE_IMAGE_URI: o caminho para um ficheiro de imagem válido num contentor do Cloud Storage. Tem de ter, pelo menos, privilégios de leitura para o ficheiro.
Exemplo:
gs://cloud-samples-data/vision/image_properties/bali.jpeg
- RESULTS_INT: (Opcional) Um valor inteiro de resultados a
devolver. Se omitir o campo
"maxResults"
e o respetivo valor, a API devolve o valor predefinido de 10 resultados. Este campo não se aplica aos seguintes tipos de elementos:TEXT_DETECTION
,DOCUMENT_TEXT_DETECTION
ouCROP_HINTS
. - PROJECT_ID: o ID do seu Google Cloud projeto.
Detete as propriedades de imagens numa imagem local
Pode usar a API Vision para realizar a deteção de caraterísticas num ficheiro de imagem local.
Para pedidos REST, envie o conteúdo do ficheiro de imagem como uma string codificada em base64 no corpo do pedido.
Para pedidos da gcloud
e da biblioteca de cliente, especifique o caminho para uma imagem local no seu pedido.
O campo
ColorInfo
não contém informações sobre o
espaço de cores absoluto que deve
ser usado para interpretar o valor RGB (por exemplo, sRGB,
Adobe RGB, DCI-P3, BT.2020, etc.). Por predefinição, as aplicações devem assumir o espaço de cores sRGB.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
POST https://vision.googleapis.com/v1/images:annotate
Corpo JSON do pedido:
{ "requests": [ { "image": { "content": "BASE64_ENCODED_IMAGE" }, "features": [ { "maxResults": RESULTS_INT, "type": "IMAGE_PROPERTIES" }, ] } ] }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vision.googleapis.com/v1/images:annotate"
PowerShell
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/images:annotate" | Select-Object -Expand Content
Se o pedido for bem-sucedido, o servidor devolve um código de estado HTTP 200 OK
e a resposta no formato JSON.
Resposta:
Resposta
{ "responses": [ { "imagePropertiesAnnotation": { "dominantColors": { "colors": [ { "color": { "red": 243, "green": 177, "blue": 133 }, "score": 0.18074834, "pixelFraction": 0.013533333 }, { "color": { "red": 204, "green": 205, "blue": 213 }, "score": 0.092455424, "pixelFraction": 0.19266666 }, { "color": { "red": 114, "green": 77, "blue": 64 }, "score": 0.090447456, "pixelFraction": 0.034133334 }, { "color": { "red": 224, "green": 57, "blue": 64 }, "score": 0.010952942, "pixelFraction": 0.014266667 }, { "color": { "red": 248, "green": 125, "blue": 130 }, "score": 0.006984347, "pixelFraction": 0.0057333335 }, { "color": { "red": 150, "green": 107, "blue": 92 }, "score": 0.081589326, "pixelFraction": 0.019666666 }, { "color": { "red": 233, "green": 185, "blue": 158 }, "score": 0.08035342, "pixelFraction": 0.0122 }, { "color": { "red": 221, "green": 221, "blue": 226 }, "score": 0.045200635, "pixelFraction": 0.202 }, { "color": { "red": 105, "green": 77, "blue": 75 }, "score": 0.030223774, "pixelFraction": 0.013866667 }, { "color": { "red": 189, "green": 145, "blue": 123 }, "score": 0.028689377, "pixelFraction": 0.0069333334 } ] } }, "cropHintsAnnotation": { "cropHints": [ { "boundingPoly": { "vertices": [ {}, { "x": 2549 }, { "x": 2549, "y": 1699 }, { "y": 1699 } ] }, "confidence": 0.79999995, "importanceFraction": 1 } ] } } ] }
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do Vision usando bibliotecas cliente. Para mais informações, consulte a documentação de referência da API GoVision.
Para se autenticar no Vision, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
// 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(c&olor.Red) 0xff
g := int(col&or.Green) 0xff
b := int(co&lor.Blue) 0xff
fmt.Fprintf(w, "%2.1f%% - #%02x%02x%02x\n", quantized.PixelFraction*100, r, g, b
)
}
return nil
}
Java
Antes de experimentar este exemplo, siga as instruções de configuração do Java no guia de início rápido da API Vision com as bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java Vision.
import com.google.cloud.vision.v1.AnnotateImageRequest;
import com.google.cloud.vision.v1.AnnotateImageResponse;
import com.google.cloud.vision.v1.BatchAnnotateImagesResponse;
import com.google.cloud.vision.v1.ColorInfo;
import com.google.cloud.vision.v1.DominantColorsAnnotation;
import com.google.cloud.vision.v1.Feature;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.protobuf.ByteString;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DetectProperties {
public static void detectProperties() throws IOException {
// TODO(developer): Replace these variables before running the sample.
String filePath = "path/to/your/image/file.jpg";
detectProperties(filePath);
}
// Detects image properties such as color frequency from the specified local image.
public static void detectProperties(String filePath) throws IOException <{
ListAnnotateIm>ageRequest requests = new<> ArrayList();
ByteString imgBytes = ByteString.readFrom(new FileInputStream(filePath));
Image img = Image.newBuilder().setContent(imgBytes).build();
Feature feat = Feature.newBuilder().setType(Feature.Type.IMAGE_PROPERTIES).build();
AnnotateImageRequest request =
AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(img).build();
requests.add(request);
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
BatchAnnotateImagesResponse response = client.batchAnnotateImages(r<equests);
ListA>nnotateImageResponse responses = response.getResponsesList();
for (AnnotateImageResponse res : responses) {
if (res.hasError()) {
System.out.format("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()) {
System.out.format(
"fraction: %f%nr: %f, g: %f, b: %f%n",
color.getPixelFraction(),
color.getColor().getRed(),
color.getColor().getGreen(),
color.getColor().g
etBlue());
}
}
}
}
}
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do Vision usando bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Node.jsVision.
Para se autenticar no Vision, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
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 = cons
ole.log(color));
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vision usando bibliotecas cliente. Para mais informações, consulte a documentação de referência da API PythonVision.
Para se autenticar no Vision, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
def detect_properties(path):
"""Detects image properties in the file."""
from google.cloud import vision
client = vision.ImageAnnotatorClient()
with open(path, "rb") as image_file:
content = image_file.read()
image = vision.Image(content=content)
response = client.image_properties(image=image)
props = response.image_properties_annotation
print("Properties:")
for color in props.dominant_colors.colors:
print(f"fraction: {color.pixel_fraction}")
print(f"\tr: {color.color.red}")
print(f"\tg: {color.color.green}")
print(f"\tb: {color.color.blue}")
print(f"\ta: {color.color.alpha}")
if response.error.message:
raise Exception(
"{}\nFor more info on error messages, chec
k: "
"https://cloud.google.com/apis/design/errors".format(response.error.message)
)
Idiomas adicionais
C#: Siga as instruções de configuração do C# na página das bibliotecas cliente e, em seguida, visite a documentação de referência do Vision para .NET.
PHP: Siga as instruções de configuração do PHP na página das bibliotecas cliente e, em seguida, visite a documentação de referência do Vision para PHP.
Ruby: Siga as instruções de configuração do Ruby na página das bibliotecas cliente e, em seguida, visite a documentação de referência do Vision para Ruby.
Detete propriedades de imagens numa imagem remota
Pode usar a API Vision para realizar a deteção de funcionalidades num ficheiro de imagem remoto localizado no Cloud Storage ou na Web. Para enviar um pedido de ficheiro remoto, especifique o URL da Web ou o URI do Google Cloud Storage do ficheiro no corpo do pedido.
O campo
ColorInfo
não contém informações sobre o
espaço de cores absoluto que deve
ser usado para interpretar o valor RGB (por exemplo, sRGB,
Adobe RGB, DCI-P3, BT.2020, etc.). Por predefinição, as aplicações devem assumir o espaço de cores sRGB.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Método HTTP e URL:
POST https://vision.googleapis.com/v1/images:annotate
Corpo JSON do pedido:
{ "requests": [ { "image": { "source": { "gcsImageUri": "CLOUD_STORAGE_IMAGE_URI" } }, "features": [ { "maxResults": RESULTS_INT, "type": "IMAGE_PROPERTIES" }, ] } ] }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vision.googleapis.com/v1/images:annotate"
PowerShell
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/images:annotate" | Select-Object -Expand Content
Se o pedido for bem-sucedido, o servidor devolve um código de estado HTTP 200 OK
e a resposta no formato JSON.
Resposta:
Resposta
{ "responses": [ { "imagePropertiesAnnotation": { "dominantColors": { "colors": [ { "color": { "red": 243, "green": 177, "blue": 133 }, "score": 0.18074834, "pixelFraction": 0.013533333 }, { "color": { "red": 204, "green": 205, "blue": 213 }, "score": 0.092455424, "pixelFraction": 0.19266666 }, { "color": { "red": 114, "green": 77, "blue": 64 }, "score": 0.090447456, "pixelFraction": 0.034133334 }, { "color": { "red": 224, "green": 57, "blue": 64 }, "score": 0.010952942, "pixelFraction": 0.014266667 }, { "color": { "red": 248, "green": 125, "blue": 130 }, "score": 0.006984347, "pixelFraction": 0.0057333335 }, { "color": { "red": 150, "green": 107, "blue": 92 }, "score": 0.081589326, "pixelFraction": 0.019666666 }, { "color": { "red": 233, "green": 185, "blue": 158 }, "score": 0.08035342, "pixelFraction": 0.0122 }, { "color": { "red": 221, "green": 221, "blue": 226 }, "score": 0.045200635, "pixelFraction": 0.202 }, { "color": { "red": 105, "green": 77, "blue": 75 }, "score": 0.030223774, "pixelFraction": 0.013866667 }, { "color": { "red": 189, "green": 145, "blue": 123 }, "score": 0.028689377, "pixelFraction": 0.0069333334 } ] } }, "cropHintsAnnotation": { "cropHints": [ { "boundingPoly": { "vertices": [ {}, { "x": 2549 }, { "x": 2549, "y": 1699 }, { "y": 1699 } ] }, "confidence": 0.79999995, "importanceFraction": 1 } ] } } ] }
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do Vision usando bibliotecas cliente. Para mais informações, consulte a documentação de referência da API GoVision.
Para se autenticar no Vision, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
// 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(c&olor.Red) 0xff
g := int(col&or.Green) 0xff
b := int(co&lor.Blue) 0xff
fmt.Fprintf(w, "%2.1f%% - #%02x%02x%02x\n", quantized.PixelFraction*100, r, g, b
)
}
return nil
}
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vision usando bibliotecas cliente. Para mais informações, consulte a documentação de referência da API JavaVision.
Para se autenticar no Vision, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
import com.google.cloud.vision.v1.AnnotateImageRequest;
import com.google.cloud.vision.v1.AnnotateImageResponse;
import com.google.cloud.vision.v1.BatchAnnotateImagesResponse;
import com.google.cloud.vision.v1.ColorInfo;
import com.google.cloud.vision.v1.DominantColorsAnnotation;
import com.google.cloud.vision.v1.Feature;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.cloud.vision.v1.ImageSource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DetectPropertiesGcs {
public static void detectPropertiesGcs() throws IOException {
// TODO(developer): Replace these variables before running the sample.
String filePath = "gs://your-gcs-bucket/path/to/image/file.jpg";
detectPropertiesGcs(filePath);
}
// Detects image properties such as color frequency from the specified remote image on Google
// Cloud Storage.
public static void detectPropertiesGcs(String gcsPath) throws IOException <{
ListAnnotateIm>ageRequest requests = new<> ArrayList();
ImageSource imgSource = ImageSource.newBuilder().setGcsImageUri(gcsPath).build();
Image img = Image.newBuilder().setSource(imgSource).build();
Feature feat = Feature.newBuilder().setType(Feature.Type.IMAGE_PROPERTIES).build();
AnnotateImageRequest request =
AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(img).build();
requests.add(request);
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
BatchAnnotateImagesResponse response = client.batchAnnotateImages(r<equests);
ListA>nnotateImageResponse responses = response.getResponsesList();
for (AnnotateImageResponse res : responses) {
if (res.hasError()) {
System.out.format("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()) {
System.out.format(
"fraction: %f%nr: %f, g: %f, b: %f%n",
color.getPixelFraction(),
color.getColor().getRed(),
color.getColor().getGreen(),
color.getColor().g
etBlue());
}
}
}
}
}
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do Vision usando bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Node.jsVision.
Para se autenticar no Vision, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
// 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(colo
r = console.log(color));
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vision usando bibliotecas cliente. Para mais informações, consulte a documentação de referência da API PythonVision.
Para se autenticar no Vision, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
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.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(f"frac: {color.pixel_fraction}")
print(f"\tr: {color.color.red}")
print(f"\tg: {color.color.green}")
print(f"\tb: {color.color.blue}")
print(f"\ta: {color.color.alpha}")
if response.error.message:
raise Exception(
"{}\nFor more info on error messages, check: "
"https://cloud.google.com/apis/design/errors".format(response.error.message)
)
gcloud
Para realizar a deteção de propriedades de imagens, use o comando
gcloud ml vision detect-image-properties
conforme mostrado no exemplo seguinte:
gcloud ml vision detect-image-properties gs://cloud-samples-data/vision/image_properties/bali.jpeg
Idiomas adicionais
C#: Siga as instruções de configuração do C# na página das bibliotecas cliente e, em seguida, visite a documentação de referência do Vision para .NET.
PHP: Siga as instruções de configuração do PHP na página das bibliotecas cliente e, em seguida, visite a documentação de referência do Vision para PHP.
Ruby: Siga as instruções de configuração do Ruby na página das bibliotecas cliente e, em seguida, visite a documentação de referência do Vision para Ruby.
Experimentar
Experimente a deteção de propriedades de imagens abaixo. Pode usar a imagem já especificada (gs://cloud-samples-data/vision/image_properties/bali.jpeg
) ou especificar a sua própria imagem em alternativa. Envie o pedido selecionando
Executar.

Corpo do pedido:
{ "requests": [ { "features": [ { "maxResults": 10, "type": "IMAGE_PROPERTIES" } ], "image": { "source": { "imageUri": "gs://cloud-samples-data/vision/image_properties/bali.jpeg" } } } ] }