Público-alvo
O objetivo deste tutorial é ajudar a desenvolver aplicações com a funcionalidade Crop Hints da API Vision. Parte do princípio de que tem conhecimentos das técnicas e das construções de programação básicas. No entanto, mesmo que seja um programador iniciante, deve conseguir seguir e executar este tutorial sem dificuldade e, em seguida, usar a documentação de referência da API Vision para criar aplicações básicas.
Este tutorial explica passo a passo uma aplicação da API Vision, mostrando como fazer uma chamada à API Vision para usar a respetiva funcionalidade de sugestões de recorte.
Pré-requisitos
- Configure um projeto da API Vision na Google Cloud consola.
Configure o seu ambiente para usar as Credenciais padrão da aplicação.
Python
- Instale o Python.
- Instale o pip.
- Instale a biblioteca cliente do Google Cloud.
- Instale a Python Imaging Library
Vista geral
Este tutorial explica passo a passo uma aplicação básica da API Vision que usa um
Crop Hints
pedido. Pode fornecer a imagem a ser processada através de um URI do Cloud Storage (localização do contentor do Cloud Storage) ou incorporada no pedido. Uma Crop Hints
resposta bem-sucedida devolve as coordenadas de uma caixa delimitadora recortada à volta do objeto ou da cara dominante na imagem.
Lista de códigos
À medida que lê o código, recomendamos que o siga consultando a referência Python da Cloud Vision API.
Uma visão mais detalhada
Importar bibliotecas
Importamos bibliotecas padrão:
argparse
para permitir que a aplicação aceite nomes de ficheiros de entrada como argumentosio
para E/S de ficheiros
Outras importações:
- A classe
ImageAnnotatorClient
na bibliotecagoogle.cloud.vision
para aceder à API Vision. - O módulo
types
na bibliotecagoogle.cloud.vision
para criar pedidos - Os módulos
Image
eImageDraw
daPython Imaging Library
(PIL). para desenhar uma caixa de limite na imagem de entrada.
Executar a aplicação
Aqui, analisamos simplesmente o argumento transmitido que especifica o nome do ficheiro da imagem local e transmitimo-lo a uma função para recortar a imagem ou desenhar a sugestão.
Autenticação na API
Antes de comunicar com o serviço da API Vision, tem de
autenticar o seu serviço através de credenciais adquiridas anteriormente. Numa aplicação, a forma mais simples de obter credenciais é usar as Credenciais padrão da aplicação (ADC). Por predefinição, a biblioteca de cliente tenta obter credenciais da variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
, que deve ser definida para apontar para o ficheiro de chave JSON da sua conta de serviço (consulte o artigo Configure uma conta de serviço para mais informações).
Obter anotações de sugestões de recorte para a imagem
Agora que a biblioteca de cliente Vision está autenticada, podemos aceder ao serviço chamando o método crop_hints
da instância ImageAnnotatorClient
.
A proporção do resultado é especificada num objeto ImageContext
. Se forem transmitidas várias proporções, são devolvidas várias sugestões de recorte, uma para cada proporção.
A biblioteca de cliente encapsula os detalhes dos pedidos e das respostas à API. Consulte a referência da API Vision para ver informações completas sobre a estrutura de um pedido.
Usar a resposta para recortar ou desenhar a caixa delimitadora da sugestão
Assim que a operação for concluída com êxito, a resposta da API vai conter as coordenadas da caixa delimitadora de um ou mais cropHint
s. O método
draw_hint
desenha linhas à volta da caixa delimitadora CropHints e, em seguida, escreve
a imagem em output-hint.jpg
.
O método crop_to_hint
recorta a imagem com base na sugestão de recorte.
Executar a aplicação
Para executar a aplicação, pode
transferir este ficheiro cat.jpg
(pode ter de clicar com o botão direito do rato no link)
e, em seguida, transmitir a localização onde transferiu o ficheiro no seu computador local
para a aplicação do tutorial (crop_hints.py
).

Segue-se o comando Python, seguido do resultado da consola, que apresenta a resposta JSON cropHintsAnnotation
. Esta resposta inclui as coordenadas da caixa delimitadora cropHints
. Pedimos uma área de recorte com uma proporção de 1, 77 de largura para altura, e as coordenadas x,y devolvidas do retângulo de recorte superior esquerdo e inferior direito são 0,336
, 1100,967
.
python crop_hints.py cat.jpeg crop
{ "responses": [ { "cropHintsAnnotation": { "cropHints": [ { "boundingPoly": { "vertices": [ { "y": 336 }, { "x": 1100, "y": 336 }, { "x": 1100, "y": 967 }, { "y": 967 } ] }, "confidence": 0.79999995, "importanceFraction": 0.69 } ] } } ] }
E aqui está a imagem recortada.

Parabéns! Executou a API Cloud Vision Crop Hints para devolver as coordenadas da caixa delimitadora otimizadas em torno do objeto dominante detetado na imagem!