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 oMicrosoft.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
- 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
Criar um recurso do Azure
Comece a utilizar a API de Pesquisa Visual do Bing ao criar um dos seguintes recursos do Azure:
- Disponível através do portal do Azure até eliminar o recurso.
- Selecione o
S9
escalão de preço.
- 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 ImageInsightsToken
imagem.
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.