Tutorial: extrair os detalhes da imagem através da API de Pesquisa de Imagens do Bing e C#
Aviso
A 30 de outubro de 2020, as APIs de Pesquisa do Bing passaram dos serviços de IA do Azure para os Serviços Pesquisa do Bing. Esta documentação é fornecida apenas para referência. Para obter documentação atualizada, veja a documentação da API de pesquisa do Bing. Para obter instruções sobre como criar novos recursos do Azure para a pesquisa do Bing, veja Criar um recurso de Pesquisa do Bing através do Azure Marketplace.
Existem múltiplos pontos finais disponíveis através da API de Pesquisa de Imagens do Bing. O ponto final /details
aceita um pedido POST com uma imagem e pode devolver uma série de detalhes sobre a imagem. Esta aplicação C# envia uma imagem através desta API e apresenta os detalhes devolvidos pelo Bing, que são objetos JSON como os seguintes:
Este tutorial explica como:
- Utilizar o ponto final
/details
da Pesquisa de Imagens num pedidoPOST
- Especificar cabeçalhos para o pedido
- Utilizar os parâmetros de URL para especificar resultados
- Carregar os dados da imagem e enviar o pedido
POST
- Imprimir os resultados JSON para a consola
Pré-requisitos
- Qualquer edição do Visual Studio 2017 ou posterior.
Criar um pedido de pesquisa de detalhes da imagem
Segue-se o ponto final /details
, que aceita pedidos POST com dados da imagem no corpo do pedido. Pode utilizar o ponto final global abaixo ou o ponto final de subdomínio personalizado apresentado no portal do Azure do recurso.
https://api.cognitive.microsoft.com/bing/v7.0/images/details
Ao criar o URL do pedido de pesquisa, o parâmetro modules
segue o ponto final acima e especifica os tipos de detalhes que os resultados terão:
modules=All
-
modules=RecognizedEntities
(pessoas ou locais visíveis na imagem)
Especifique modules=All
no pedido POST para obter o texto JSON que inclui o seguinte:
-
bestRepresentativeQuery
– uma consulta do Bing que devolve imagens semelhantes à imagem carregada -
detectedObjects
– objetos encontrados na imagem -
image
– metadados da imagem -
imageInsightsToken
– um token para pedidos GET posteriores que obtêmRecognizedEntities
(pessoas ou locais visíveis na imagem) da imagem. -
imageTags
– etiquetas da imagem -
pagesIncluding
– páginas Web que incluam a imagem -
relatedSearches
– pesquisas com base nos detalhes na imagem. -
visuallySimilarImages
– imagens semelhantes na Web.
Especifique modules=RecognizedEntities
no pedido POST para obter apenas imageInsightsToken
, que pode ser utilizado num pedido GET subsequente para identificar pessoas ou locais na imagem.
Criar um objeto WebClient e configurar cabeçalhos para o pedido da API
Crie um objeto WebClient
e configure os cabeçalhos. Todos os pedidos para a API de Pesquisa do Bing necessitam de uma Ocp-Apim-Subscription-Key
. Um pedido POST
para carregar uma imagem também tem de especificar o ContentType: multipart/form-data
.
WebClient client = new WebClient();
client.Headers["Ocp-Apim-Subscription-Key"] = accessKey;
client.Headers["ContentType"] = "multipart/form-data";
Carregar a imagem e apresentar os resultados
O método UpLoadFile()
da classe WebClient
que formata os dados para o pedido POST
, incluindo formatar o RequestStream
e chamar o HttpWebRequest
.
Chame o WebClient.UpLoadFile()
com o ponto final /details
e o ficheiro de imagem a carregar. Utilize a resposta JSON para inicializar uma instância da estrutura SearchResult
e armazene a resposta.
const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/images/details";
// The image to upload. Replace with your file and path.
const string imageFile = "your-image.jpg";
byte[] resp = client.UploadFile(uriBase + "?modules=All", imageFile);
var json = System.Text.Encoding.Default.GetString(resp);
// Create result object for return
var searchResult = new SearchResult()
{
jsonResult = json,
relevantHeaders = new Dictionary<String, String>()
};
Em seguida, esta resposta JSON pode ser impressa na consola.
Utilizar o token de informações da imagem num pedido
Para utilizar o ImageInsightsToken
devolvido com os resultados de um pedido POST
, pode adicioná-lo a um pedido GET
. Por exemplo:
https://api.cognitive.microsoft.com/bing/v7.0/images/details?InsightsToken="bcid_A2C4BB81AA2C9EF8E049C5933C546449*ccid_osS7gaos*mid_BF7CC4FC4A882A3C3D56E644685BFF7B8BACEAF2
Se existirem pessoas ou locais identificáveis na imagem, este pedido devolverá informações sobre os mesmos.
Passos seguintes
Ver também
- Bing Image Search API reference (Referência da API de Pesquisa de Imagens do Bing)