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
- 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
Criar um recurso do Azure
Comece a usar a API de Pesquisa Visual do Bing criando um dos seguintes recursos do Azure:
- Disponível através do portal do Azure até eliminar o recurso.
- Selecione o nível de
S9
preç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:
Esta imagem é cortada criando um ImageInfo
objeto da área de corte e carregando o ImageInfo
objeto em um VisualSearchRequest
arquivo . 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);
}
}