Esercitazione: Estrarre i dettagli dell'immagine usando l'API Ricerca immagini Bing e C#
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.
Nell'API Ricerca immagini Bing sono disponibili più endpoint. L'endpoint /details
accetta una richiesta POST con un'immagine e può restituire un'ampia gamma di dettagli relativi all'immagine. L'applicazione C# invia un'immagine tramite l'API e visualizza i dettagli restituiti da Bing, costituiti da oggetti JSON, come illustrato di seguito:
In questa esercitazione viene illustrato come:
- Usare l'endpoint
/details
di Ricerca immagini in una richiestaPOST
- Specificare le intestazioni per la richiesta
- Usare i parametri dell'URL per specificare i risultati
- Caricare i dati dell'immagine e inviare la richiesta
POST
- Stampare i risultati del file JSON nella console
Prerequisiti
- Qualsiasi edizione di Visual Studio 2017 o versioni successive.
Costruire una richiesta di ricerca dei dettagli di un'immagine
Di seguito è riportato l'endpoint /details
che accetta richieste POST con i dati di un'immagine nel corpo della richiesta. È possibile usare l'endpoint globale seguente o l'endpoint sottodominio personalizzato visualizzato nel portale di Azure per la risorsa.
https://api.cognitive.microsoft.com/bing/v7.0/images/details
Quando si costruisce l'URL della richiesta di ricerca, il parametro modules
segue l'endpoint sopra riportato e specifica i tipi di dettagli che dovranno essere contenuti nei risultati:
modules=All
modules=RecognizedEntities
(persone o località visibili nell'immagine)
Specificare modules=All
nella richiesta POST per ottenere il testo JSON che include l'elenco seguente:
bestRepresentativeQuery
: query Bing che restituisce immagini simili a quella caricatadetectedObjects
: oggetti trovati nell'immagineimage
: metadati dell'immagineimageInsightsToken
: token per richieste GET successive che ottengonoRecognizedEntities
(persone o località visibili nell'immagine) dall'immagine.imageTags
: tag dell'immaginepagesIncluding
: pagine Web che includono l'immaginerelatedSearches
: ricerche basate sui dettagli dell'immagine.visuallySimilarImages
: immagini simili sul Web.
Specificare modules=RecognizedEntities
nella richiesta POST per ottenere solo imageInsightsToken
, che può essere usato in una richiesta GET successiva per identificare persone o località presenti nell'immagine.
Creare un oggetto WebClient e impostare le intestazioni per la richiesta API
Creare un oggetto WebClient
e impostare le intestazioni. Tutte le richieste all'API di ricerca Bing richiedono un elemento Ocp-Apim-Subscription-Key
. Una richiesta POST
di caricamento di un'immagine deve specificare anche ContentType: multipart/form-data
.
WebClient client = new WebClient();
client.Headers["Ocp-Apim-Subscription-Key"] = accessKey;
client.Headers["ContentType"] = "multipart/form-data";
Caricare l'immagine e visualizzare i risultati
Il metodo UpLoadFile()
della classe WebClient
formatta i dati per la richiesta POST
, oltre a formattare RequestStream
e chiamare HttpWebRequest
.
Chiamare WebClient.UpLoadFile()
con l'endpoint /details
e il file dell'immagine da caricare. Usare la risposta JSON per inizializzare un'istanza della struttura SearchResult
e memorizzare la risposta.
const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/images/details";
// The image to upload. Replace with your file and path.
const string imageFile = "your-image.jpg";
byte[] resp = client.UploadFile(uriBase + "?modules=All", imageFile);
var json = System.Text.Encoding.Default.GetString(resp);
// Create result object for return
var searchResult = new SearchResult()
{
jsonResult = json,
relevantHeaders = new Dictionary<String, String>()
};
La risposta JSON può essere stampata nella console.
Usare il token imageInsightsToken in una richiesta
Per usare il token ImageInsightsToken
restituito con i risultati di una richiesta POST
, è possibile aggiungerlo a una richiesta GET
. Ad esempio:
https://api.cognitive.microsoft.com/bing/v7.0/images/details?InsightsToken="bcid_A2C4BB81AA2C9EF8E049C5933C546449*ccid_osS7gaos*mid_BF7CC4FC4A882A3C3D56E644685BFF7B8BACEAF2
Se nell'immagine sono presenti persone o località identificabili, questa richiesta restituirà informazioni su di esse.