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 pacchettoMicrosoft.Azure.CognitiveServices.Search.ImageSearch
. L'installazione dei pacchetti NuGet installa anche quanto segue:- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
- 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
Creare una risorsa di Azure
Iniziare a usare l'API Ricerca visiva Bing creando una delle risorse di Azure seguenti:
- Disponibile tramite il portale di Azure fino a quando non si elimina la risorsa.
- Selezionare il piano tariffario
S9
.
- 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.