Compartilhar via


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

Aviso

Em 30 de outubro de 2020, as APIs de Pesquisa do Bing foram transferidas 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.

Há múltiplos endpoints disponíveis por meio da API de Pesquisa de Imagem do Bing. O /details endpoint aceita uma solicitação POST com uma imagem e pode retornar uma variedade de detalhes sobre a imagem. Este aplicativo C# envia uma imagem usando essa API e exibe os detalhes retornados pelo Bing, que são objetos JSON, como o seguinte:

[Resultados JSON]

Este tutorial explica como:

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

Pré-requisitos

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

A seguir está o /details endpoint, que aceita solicitações POST com dados de imagem no corpo do pedido. Você pode usar o seguinte ponto de extremidade global, ou o ponto de extremidade do 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 modules parâmetro segue o ponto de extremidade acima e especifica os tipos de 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 para a imagem
  • imageInsightsToken - um token para solicitações GET posteriores que obtêm RecognizedEntities (pessoas ou locais visíveis na imagem) da imagem.
  • imageTags - tags para a imagem
  • pagesIncluding - Páginas da Web que incluem a imagem
  • relatedSearches – pesquisa com base em detalhes na imagem.
  • visuallySimilarImages – imagens semelhantes na Web.

Especifique modules=RecognizedEntities na solicitação POST somente para obter imageInsightsToken, que pode ser usada em uma solicitação GET subsequente para identificar pessoas ou locais na imagem.

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

Crie um WebClient objeto e defina os cabeçalhos. Todas as solicitações para a API de Pesquisa do Bing exigem uma Ocp-Apim-Subscription-Key. Uma POST solicitação 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 dados para a solicitação POST, incluindo a formatação de RequestStream e a chamada de HttpWebRequest.

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

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, você pode adicioná-lo a uma requisiçã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 elas.

Próximas etapas

Consulte também

  • referência da API de Pesquisa de Imagem do Bing