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:
Este tutorial explica como:
- Usar o ponto de extremidade
/details
Pesquisa de Imagem em uma solicitaçãoPOST
- 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
- Qualquer edição do Visual Studio 2017 ou posterior.
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 extraemRecognizedEntities
(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.