Share via


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:

[Risultati JSON]

In questa esercitazione viene illustrato come:

  • Usare l'endpoint /details di Ricerca immagini in una richiesta POST
  • 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

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 caricata
  • detectedObjects: oggetti trovati nell'immagine
  • image: metadati dell'immagine
  • imageInsightsToken: token per richieste GET successive che ottengono RecognizedEntities (persone o località visibili nell'immagine) dall'immagine.
  • imageTags: tag dell'immagine
  • pagesIncluding: pagine Web che includono l'immagine
  • relatedSearches: 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.

Passaggi successivi

Vedere anche