Compartilhar via


Tutorial: extrair detalhes da imagem usando a API de Pesquisa de Imagem do Bing e C#

Aviso

Em 30 de outubro de 2020, as APIs de Pesquisa do Bing foram migradas dos serviços de IA do Azure para os Serviços de Pesquisa do Bing. Esta documentação é fornecida apenas para referência. Para obter a documentação atualizada, consulte 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, consulte Criar um recurso de Pesquisa do Bing por meio do Azure Marketplace.

Existem vários pontos de extremidade disponíveis na API de Pesquisa de Imagem do Bing. O ponto de extremidade /details aceita uma solicitação POST com uma imagem e pode retornar uma variedade de detalhes sobre a imagem. Este aplicativo em C# envia uma imagem usando essa API e exibe os detalhes retornados pelo Bing, que são objetos JSON, como os seguintes:

[Resultados JSON]

Este tutorial explica como:

  • Usar o ponto de extremidade /details Pesquisa de Imagem em uma solicitação POST
  • Especificar os cabeçalhos da solicitação
  • Usar parâmetros de URL para especificar os resultados
  • Carregar os dados da imagem e enviar a solicitação POST
  • Imprimir os resultados JSON para o console

Pré-requisitos

Construir uma solicitação de pesquisa de detalhes da imagem

A seguir está o ponto de extremidade /details, que aceita solicitações POST com os dados de imagem no corpo da solicitação. Você pode usar o ponto de extremidade global abaixo ou o ponto de extremidade de subdomínio personalizado exibido no portal do Azure para seu recurso.

https://api.cognitive.microsoft.com/bing/v7.0/images/details

Ao construir a URL de solicitação de pesquisa, o parâmetro modules segue o ponto de extremidade acima e especifica os tipos dos detalhes que os resultados conterão:

  • modules=All
  • modules=RecognizedEntities (pessoas ou locais visíveis na imagem)

Especifique modules=All na solicitação POST para obter o texto JSON que inclui o seguinte:

  • bestRepresentativeQuery - uma consulta do Bing que retorna imagens semelhantes à imagem carregada
  • detectedObjects – objetos encontrados na imagem
  • image – metadados da imagem
  • imageInsightsToken – um token para solicitações GET posteriores que extraem RecognizedEntities (pessoas ou lugares visíveis na imagem) da imagem.
  • imageTags – tags da imagem
  • pagesIncluding - Páginas da Web que incluem a imagem
  • relatedSearches – pesquisas baseadas nos detalhes da imagem.
  • visuallySimilarImages – imagens semelhantes na Web.

Na solicitação POST, especifique que modules=RecognizedEntities só extrairá imageInsightsToken, que pode ser usado em uma solicitação GET posterior para identificar pessoas ou lugares na imagem.

Criar um objeto WebClient e definir os cabeçalhos para a solicitação de API

Crie um objeto WebClient e defina os cabeçalhos. Todas as solicitações para a API de Pesquisa do Bing requerem um Ocp-Apim-Subscription-Key. Uma solicitação POST para carregar uma imagem também deve especificar 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 exibir os resultados

O método UpLoadFile() da classe WebClient formata os dados da solicitação POST, incluindo a formatação de RequestStream e a chamada para HttpWebRequest.

Chame WebClient.UpLoadFile() com o ponto de extremidade /details e o arquivo de imagem a ser carregado. Use a resposta JSON para inicializar uma instância da estrutura SearchResult e armazenar 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>()
};

Depois, essa resposta JSON pode ser impressa no console.

Usar um token de insights de imagem em uma solicitação

Para usar o ImageInsightsToken retornado com os resultados de um POST, é necessário adicioná-lo a uma solicitação GET. Por exemplo:

https://api.cognitive.microsoft.com/bing/v7.0/images/details?InsightsToken="bcid_A2C4BB81AA2C9EF8E049C5933C546449*ccid_osS7gaos*mid_BF7CC4FC4A882A3C3D56E644685BFF7B8BACEAF2

Se houver pessoas ou locais identificáveis na imagem, essa solicitação retornará informações sobre eles.

Próximas etapas

Confira também