Partilhar via


Tutorial: Recortar uma imagem com o SDK de Pesquisa Visual do Bing para C#

Aviso

Em 30 de outubro de 2020, as APIs de Pesquisa do Bing foram movidas 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 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 através do Azure Marketplace.

O SDK de Pesquisa Visual do Bing permite cortar uma imagem antes de encontrar imagens online semelhantes. Esta aplicação corta uma única pessoa de uma imagem que contém várias pessoas e, em seguida, devolve resultados de pesquisa contendo imagens semelhantes encontradas online.

O código-fonte completo para este aplicativo está disponível com manipulação de erros e anotações adicionais no GitHub.

Este tutorial ilustra como:

  • Enviar uma solicitação usando o SDK de Pesquisa Visual do Bing
  • Recortar uma área de imagem para pesquisar com a Pesquisa Visual do Bing
  • Receber e lidar com a resposta
  • Localizar os URLs dos itens de ação na resposta

Pré-requisitos

  • Qualquer edição do Visual Studio 2019.
  • Se estiver a utilizar o Linux/MacOS, esta aplicação pode ser executada com o Mono.
  • O pacote de Pesquisa Personalizada do NuGetinstalado.
    • No Gerenciador de Soluções no Visual Studio, clique com o botão direito do mouse em seu projeto e selecione Gerenciar Pacotes NuGet no menu. Instale o pacote Microsoft.Azure.CognitiveServices.Search.CustomSearch. A instalação do pacote de Pesquisa Personalizada do NuGet também instala os seguintes assemblies:
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Criar um recurso do Azure

Comece a usar a API de Pesquisa Visual do Bing criando um dos seguintes recursos do Azure:

Recurso Pesquisa do Bing v7

  • Disponível através do portal do Azure até eliminar o recurso.
  • Selecione o nível de S9 preço.

Recurso multisserviço

  • Disponível através do portal do Azure até eliminar o recurso.
  • Use a mesma chave e ponto de extremidade para seus aplicativos, em vários serviços de IA do Azure.

Especificar a área de corte da imagem

Esta aplicação corta uma área desta imagem da equipa de liderança sénior da Microsoft. Esta área de corte é definida usando as coordenadas superior esquerda e inferior direita, representadas como uma porcentagem de toda a imagem:

Equipa de Liderança Sénior da Microsoft

Esta imagem é cortada criando um ImageInfo objeto da área de corte e carregando o ImageInfo objeto em um VisualSearchRequestarquivo . O ImageInfo objeto também inclui o URL da imagem:

CropArea CropArea = new CropArea(top: (float)0.01, bottom: (float)0.30, left: (float)0.01, right: (float)0.20);
string imageURL = "https://learn.microsoft.com/azure/cognitive-services/Bing-visual-search/media/ms_srleaders.jpg";
ImageInfo imageInfo = new ImageInfo(cropArea: CropArea, url: imageURL);

VisualSearchRequest visualSearchRequest = new VisualSearchRequest(imageInfo: imageInfo);

Pesquisar imagens semelhantes à área de corte

A variável VisualSearchRequest contém informações sobre a área de corte da imagem e sua URL. O VisualSearchMethodAsync() método obtém os resultados:

Console.WriteLine("\r\nSending visual search request with knowledgeRequest that contains URL and crop area");
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: visualSearchRequest).Result;

Obtenha os dados de URL de ImageModuleAction

Os resultados da Pesquisa Visual do Bing são ImageTag objetos. Cada etiqueta contém uma lista de objetos ImageAction. Cada ImageAction um contém um Data campo, que é uma lista de valores que dependem do tipo de ação.

Você pode imprimir os vários tipos com o seguinte código:

Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " -> WebSearchUrl: " + i.WebSearchUrl);

A aplicação concluída devolve:

Tipo de ação URL
PáginasIncluindo WebSearchURL
MoreSizes WebSearchURL
VisualSearch WebSearchURL
ImageById WebSearchURL
RelatedSearchs, WebSearchURL
Entidade -> WebSearchUrl https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=BvvDoRtmZ35Xc_UZE4lZx6_eg7FHgcCkigU1D98NHQo&v=1&r=https%3a%2f%2fwww.bing.com%2fsearch%3fq%3dSatya%2bNadella&p=DevEx,5380.1
TopicResults -> WebSearchUrl https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=3QGtxPb3W9LemuHRxAlW4CW7XN4sPkUYCUynxAqI9zQ&v=1&r=https%3a%2f%2fwww.bing.com%2fdiscover%2fnadella%2bsatya&p=DevEx,5382.1
ImageResults -> WebSearchUrl https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=l-WNHO89Kkw69AmIGe2MhlUp6MxR6YsJszgOuM5sVLs&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3dSatya%2bNadella&p=DevEx,5384.1

Como mostrado acima, o Entity ActionType contém uma consulta de pesquisa do Bing que retorna informações sobre uma pessoa, local ou coisa reconhecível. Os tipos TopicResults e ImageResults contêm consultas de imagens relacionadas. Os URLs na lista ligam aos resultados da pesquisa do Bing.

Obter URLs para PagesIncluding ActionType imagens

Obter os URLs da imagem atual requer uma conversão que lê um ActionType como ImageModuleAction, que contém um elemento Data com uma lista de valores. Cada valor é o URL de uma imagem. O seguinte converte o PagesIncluding tipo de ação e ImageModuleAction lê os valores:

    if (i.ActionType == "PagesIncluding")
    {
        foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
        {
            Console.WriteLine("ContentURL: " + o.ContentUrl);
        }
    }

Próximos passos

Consulte também

O que é a API de Pesquisa Visual do Bing?