Condividi tramite


Esercitazione: Trovare immagini simili dalle ricerche precedenti usando un token di informazioni dettagliate sull'immagine

Avvertimento

Il 30 ottobre 2020, le API di ricerca Bing sono state spostate dai servizi di intelligenza artificiale di Azure ai servizi di ricerca Bing. Questa documentazione è disponibile solo per riferimento. Per la documentazione aggiornata, vedere la Documentazione dell'API di Ricerca Bing. Per istruzioni sulla creazione di nuove risorse di Azure per Ricerca Bing, vedere Creare una risorsa di Ricerca Bing tramite Azure Marketplace.

La libreria client di ricerca visiva ti permette di trovare immagini online dalle ricerche precedenti che restituiscono un ImageInsightsToken. Questa applicazione ottiene un ImageInsightsToken e usa il token in una ricerca successiva. Invia quindi il ImageInsightsToken a Bing e restituisce i risultati che includono URL di ricerca Bing e URL di immagini simili trovate online.

Il codice sorgente completo per questa esercitazione è disponibile con altre annotazioni e gestione degli errori in GitHub.

Prerequisiti

  • Qualsiasi edizione di Visual Studio 2019.
  • Se si usa Linux/MacOS, è possibile eseguire questa applicazione usando Mono.
  • Pacchetti Ricerca visiva NuGet e Ricerca immagini.
    • In Esplora soluzioni in Visual Studio fare clic con il pulsante destro del mouse sul progetto e scegliere Gestisci pacchetti NuGet dal menu. Installare il pacchetto Microsoft.Azure.CognitiveServices.Search.CustomSearch e il pacchetto Microsoft.Azure.CognitiveServices.Search.ImageSearch. L'installazione dei pacchetti NuGet installa anche quanto segue:
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Creare una risorsa di Azure

Iniziare a usare l'API Ricerca visiva Bing creando una delle risorse di Azure seguenti:

risorsa ricerca Bing v7

  • Disponibile tramite il portale di Azure fino a quando non si elimina la risorsa.
  • Selezionare il piano tariffario S9.

risorsa multifunzionale

  • Disponibile tramite il portale di Azure fino a quando non si elimina la risorsa.
  • Usare la stessa chiave e lo stesso endpoint per le applicazioni in più servizi di intelligenza artificiale di Azure.

Ottieni il ImageInsightsToken dalla libreria client di Ricerca Immagini Bing

Questa applicazione usa un ImageInsightsToken ottenuto tramite la libreria client di Ricerca immagini Bing . In una nuova applicazione console C# creare un client per chiamare l'API usando ImageSearchClient(). Quindi, usa SearchAsync() con la query:

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\"");

Archiviare il primo risultato della ricerca usando imageResults.Value.First(), e poi archiviare le analisi dell'immagine ImageInsightsToken.

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!");
}

Questo ImageInsightsToken viene inviato a Bing Visual Search come parte di una richiesta.

Aggiungere ImageInsightsToken a una richiesta di Ricerca visiva

Specificare il ImageInsightsToken per una richiesta di Ricerca visiva creando un oggetto ImageInfo dal ImageInsightsToken contenuto nelle risposte di Ricerca visiva Bing.

ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);

Usare Bing Visual Search per trovare immagini a partire da un ImageInsightsToken

L'oggetto VisualSearchRequest contiene informazioni sull'immagine in ImageInfo da cercare. Il metodo VisualSearchMethodAsync() ottiene i risultati. Non è necessario fornire un file binario di immagine, perché l'immagine è rappresentata dal token.

VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);

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

Scorrere i risultati della ricerca visiva

I risultati di Ricerca visiva sono ImageTag oggetti . Ogni tag contiene un elenco di oggetti ImageAction. Ogni ImageAction contiene un campo Data, ovvero un elenco di valori che dipendono dal tipo di azione. È possibile scorrere gli oggetti ImageTag in visualSearchResults.Tags, ad esempio e ottenere il tag ImageAction al suo interno. L'esempio seguente stampa i dettagli delle azioni PagesIncluding:

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);
                }
            }
        }
    }
}

PagineIncludenti TipiDiAzione

Per ottenere gli URL di immagine effettivi dai tipi di azione è necessario un cast che legge un ActionType come ImageModuleAction, che contiene un elemento Data con un elenco di valori. Ogni valore è l'URL di un'immagine. Viene di seguito convertito il tipo di azione PagesIncluding in ImageModuleAction e vengono letti i valori:

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

Per altre informazioni su questi tipi di dati, vedere Images - Visual Search.

URL restituiti

L'applicazione completa restituisce gli URL seguenti:

Tipo di Azione URL
MoreSizes -> WebSearchUrl
VisualSearch -> WebSearchUrl
ImageById -> WebSearchUrl
RelatedSearches -> WebSearchUrl:
DocumentLevelSuggestions -> WebSearchUrl:
RisultatiArgomento -> 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
RisultatiImmagine -> WebSearchUrl https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=PV9GzMFOI0AHZp2gKeWJ8DcveSDRE3fP2jHDKMpJSU8&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3doutdoor&p=DevEx,5831.1

Come illustrato in precedenza, i tipi TopicResults e ImageResults contengono query per le immagini correlate. Collegamento degli URL ai risultati della ricerca Bing.

Passaggi successivi