Partilhar via


Tutorial: Localizar imagens semelhantes de pesquisas anteriores com um token de informações de imagem

Aviso

A 30 de outubro de 2020, as APIs de Pesquisa do Bing passaram dos serviços de IA do Azure para os Serviços Pesquisa do Bing. Esta documentação é fornecida apenas para referência. Para obter documentação atualizada, veja 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, veja Criar um recurso de Pesquisa do Bing através do Azure Marketplace.

A biblioteca de cliente do Visual Search permite-lhe encontrar imagens online de pesquisas anteriores que devolvem um ImageInsightsToken. Esta aplicação obtém um ImageInsightsToken e utiliza o token numa pesquisa subsequente. Em seguida, envia o para o ImageInsightsToken Bing e devolve resultados que incluem PESQUISA DO BING URLs e URLs de imagens semelhantes encontradas online.

O código fonte completo deste tutorial pode ser encontrado com processamento de erros e anotações adicionais no GitHub.

Pré-requisitos

  • Qualquer edição do Visual Studio 2019.
  • Se estiver a utilizar o Linux/MacOS, pode executar esta aplicação com o Mono.
  • Os pacotes De Pesquisa Visual e Pesquisa de Imagens do NuGet.
    • No Explorador de Soluções no Visual Studio, clique com o botão direito do rato no projeto e selecione Gerir Pacotes NuGet no menu. Instale o Microsoft.Azure.CognitiveServices.Search.CustomSearch pacote e o Microsoft.Azure.CognitiveServices.Search.ImageSearch pacote. A instalação dos pacotes NuGet também instala o seguinte:
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Criar um recurso do Azure

Comece a utilizar a API de Pesquisa Visual do Bing ao criar um dos seguintes recursos do Azure:

Pesquisa do Bing recurso v7

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

Recurso de vários serviços

  • Disponível através do portal do Azure até eliminar o recurso.
  • Utilize a mesma chave e ponto final para as suas aplicações, em vários serviços de IA do Azure.

Obter o ImageInsightsToken a partir da biblioteca de cliente da Pesquisa de Imagens do Bing

Esta aplicação utiliza um ImageInsightsToken obtido através da biblioteca de cliente da Pesquisa de Imagens do Bing. Numa nova aplicação de consola C#, crie um cliente para chamar a API com ImageSearchClient(). Em seguida, utilize SearchAsync() com a sua consulta:

var client = new ImageSearchClient(new Microsoft.Azure.CognitiveServices.Search.ImageSearch.ApiKeyServiceClientCredentials(subKey));
var imageResults = client.Images.SearchAsync(query: "canadian rockies").Result;
Console.WriteLine("Search images for query \"canadian rockies\"");

Armazene o primeiro resultado de pesquisa com imageResults.Value.First()e, em seguida, armazene as informações da ImageInsightsTokenimagem.

String insightTok = "None";
if (imageResults.Value.Count > 0)
{
    var firstImageResult = imageResults.Value.First();
    insightTok = firstImageResult.ImageInsightsToken;
}
else
{
    insightTok = "None found";
    Console.WriteLine("Couldn't find image results!");
}

Isto ImageInsightsToken é enviado para a Pesquisa Visual do Bing num pedido.

Adicionar o ImageInsightsToken a um pedido de Pesquisa Visual

Especifique o ImageInsightsToken para um pedido de Pesquisa Visual ao criar um ImageInfo objeto a ImageInsightsToken partir do contido nas respostas da Pesquisa Visual do Bing.

ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);

Utilizar a Pesquisa Visual do Bing para encontrar imagens de um ImageInsightsToken

O VisualSearchRequest objeto contém informações sobre a imagem em ImageInfo a ser pesquisada. O método VisualSearchMethodAsync() obtém os resultados. Não tem de fornecer um binário de imagem, uma vez que a imagem é representada pelo token.

VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);

var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result;

Iterar através dos resultados da Pesquisa Visual

Os resultados da Pesquisa Visual são objetos ImageTag. 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. Pode iterar através dos ImageTag objetos no visualSearchResults.Tags, por exemplo, e obter a ImageAction etiqueta no mesmo. O exemplo abaixo imprime os detalhes das PagesIncluding ações:

if (visualSearchResults.Tags.Count > 0)
{
    // List of tags
    foreach (ImageTag t in visualSearchResults.Tags)
    {
        foreach (ImageAction i in t.Actions)
        {
            Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " WebSearchURL: " + i.WebSearchUrl);

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

PagesIncluding ActionTypes

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

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

Para obter mais informações sobre estes tipos de dados, veja Imagens - Pesquisa Visual.

URLs devolvidos

A aplicação completa devolve os seguintes URLs:

ActionType URL
MoreSizes -> WebSearchUrl
VisualSearch -> WebSearchUrl
ImageById -> WebSearchUrl
RelatedSearches -> WebSearchUrl:
DocumentLevelSuggestions -> WebSearchUrl:
TopicResults -> WebSearchUrl https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=BcQifmzdKFyyBusjLxxgO42kzq1Geh7RucVVqvH-900&v=1&r=https%3a%2f%2fwww.bing.com%2fdiscover%2fcanadian%2brocky&p=DevEx,5823.1
ImageResults -> WebSearchUrl https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=PV9GzMFOI0AHZp2gKeWJ8DcveSDRE3fP2jHDKMpJ SU8&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3doutdoor&p=DevEx,5831.1

Conforme mostrado acima, os TopicResults tipos e ImageResults contêm consultas para imagens relacionadas. Os URLs ligam aos resultados da pesquisa do Bing.

Passos seguintes