Esercitazione: Trovare immagini simili da ricerche precedenti con ImageInsightsToken
Avviso
Il 30 ottobre 2020 le API di Ricerca Bing spostate dai servizi di intelligenza artificiale di Azure ai servizi Ricerca Bing. Questa documentazione viene fornita solo per informazioni di riferimento. Per la documentazione aggiornata, vedere la documentazione dell'API di ricerca Bing. Per istruzioni sulla creazione di nuove risorse di Azure per la ricerca Bing, vedere Creare una risorsa Ricerca Bing tramite la Azure Marketplace.
La libreria client di Ricerca visiva consente di trovare immagini online da ricerche precedenti che restituiscono ImageInsightsToken
. Questa applicazione ottiene un oggetto ImageInsightsToken
e usa il token in una ricerca successiva. Invia quindi ImageInsightsToken
a Bing e restituisce risultati che includono gli URL di Ricerca Bing e gli URL di immagini simili trovate online.
Il codice sorgente completo per questa esercitazione, con l'aggiunta di annotazioni e della gestione degli errori, è disponibile in GitHub.
Prerequisiti
- Qualsiasi edizione di Visual Studio 2019.
- Se si usa Linux/MacOS, è possibile eseguire questa applicazione con Mono.
- I pacchetti Ricerca visiva e Ricerca immagini NuGet.
- 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
. Installando i pacchetti NuGet vengono anche installati gli elementi seguenti:- 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
Per iniziare a usare l'API Ricerca visiva Bing, creare una delle seguenti risorse di Azure:
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Selezionare il piano tariffario
S9
.
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Usare la stessa chiave e l'endpoint per le applicazioni in più servizi di intelligenza artificiale di Azure.
Ottenere ImageInsightsToken dalla libreria client di Ricerca immagini Bing
Questa applicazione usa un oggetto ImageInsightsToken
ottenuto tramite la libreria client di Ricerca immagini Bing. In una nuova applicazione console C# creare un client per chiamare l'API tramite ImageSearchClient()
. Usare quindi 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 di ricerca ottenuto usando imageResults.Value.First()
e quindi archiviare l'ImageInsightsToken
delle informazioni dettagliate sull'immagine.
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 Ricerca visiva Bing in una richiesta.
Aggiungere l'oggetto ImageInsightsToken a una richiesta di Ricerca visiva
Specificare l'ImageInsightsToken
per una richiesta di Ricerca visiva mediante la creazione di un oggetto ImageInfo
dall'ImageInsightsToken
contenuto nelle risposte di Ricerca visiva Bing.
ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);
Usare Ricerca visiva Bing per trovare immagini da un oggetto ImageInsightsToken
L'oggetto VisualSearchRequest
contiene informazioni sull'immagine nell'oggetto ImageInfo
da cercare. Il metodo VisualSearchMethodAsync()
ottiene i risultati. Non è necessario fornire un file binario di immagine, in quanto l'immagine è rappresentato dal token.
VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result;
Eseguire un'iterazione sui risultati di Ricerca visiva
I risultati di Ricerca visiva sono oggetti ImageTag
. Ogni tag contiene un elenco di oggetti ImageAction
. Ogni ImageAction
contiene un campo Data
costituito da un elenco di valori che dipendono dal tipo di azione. Ad esempio è possibile eseguire un'iterazione sugli oggetti ImageTag
in visualSearchResults.Tags
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);
}
}
}
}
}
PagesIncluding ActionTypes
Ottenere l'URL dell'immagine effettiva dai tipi di azione richiede un cast che legge ActionType
come ImageModuleAction
, che contiene un elemento Data
con un elenco di valori. Ogni valore è l'URL di un'immagine. Questo codice esegue il cast del tipo di azione PagesIncluding
in ImageModuleAction
e legge 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 (Immagini - Ricerca visiva).
URL restituiti
L'applicazione completa restituisce gli URL seguenti:
ActionType | URL |
---|---|
MoreSizes -> WebSearchUrl | |
VisualSearch -> WebSearchUrl | |
ImageById -> WebSearchUrl | |
RelatedSearches -> WebSearchUrl: | |
DocumentLevelSuggestions -> WebSearchUrl: | |
TopicResults -> WebSearchUrl | https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A6A63175699B71FC36B7C&rd=1&h=BcQifmzdKFyyBusjLxxgO42kzq1Geh7RucVVqvvH-900&v=1&r=https%3a%2f%2fwww.bing.com%2fdiscover%2fcanadian%2fcanadian%2brocky&p=DevEx,5823.1 |
ImageResults -> WebSearchUrl | https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A6A63175699B71FC36B7C&rd=1&h=PV9GzMFOI0AHZp2gKeWJ8DcveSDRE3fP2jHDKMpJSU8&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3dmodel&p=DevEx,5831.1 |
Come mostrato sopra, i tipi TopicResults
e ImageResults
contengono query per le immagini correlate. Gli URL sono collegati ai risultati della ricerca Bing.