Condividi tramite


Esercitazione: Estrarre i dettagli dell'immagine usando l'API Ricerca immagini Bing e C#

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.

Sono disponibili diversi endpoint tramite l'API Ricerca immagini Bing. L'endpoint /details accetta una richiesta POST con un'immagine e può restituire un'ampia gamma di dettagli sull'immagine. Questa applicazione C# invia un'immagine usando questa API e visualizza i dettagli restituiti da Bing, che sono oggetti JSON, ad esempio i seguenti:

[Risultati JSON]

Questa esercitazione illustra come:

  • Usare l'endpoint di Ricerca Immagini /details in una richiesta POST
  • Specificare le intestazioni per la richiesta
  • Usare i parametri URL per specificare i risultati
  • Caricare i dati dell'immagine e inviare la POST richiesta
  • Stampare i risultati JSON nella console

Prerequisiti

Creare una richiesta di ricerca dei dettagli dell'immagine

Di seguito è riportato l'endpoint /details , che accetta richieste POST con dati immagine nel corpo della richiesta. È possibile usare l'endpoint globale seguente o l'endpoint del 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 modules parametro segue l'endpoint precedente e specifica i tipi di dettagli che i risultati conterranno:

  • modules=All
  • modules=RecognizedEntities (persone o luoghi visibili nell'immagine)

Specificare modules=All nella richiesta POST per ottenere testo JSON che include quanto segue:

  • bestRepresentativeQuery : una query Bing che restituisce immagini simili all'immagine caricata
  • detectedObjects - oggetti trovati nell'immagine
  • image - metadati per l'immagine
  • imageInsightsToken : un token per le richieste GET successive che ottengono RecognizedEntities (persone o posizioni visibili nell'immagine) dall'immagine.
  • imageTags - tag per l'immagine
  • pagesIncluding - Pagine Web che includono l'immagine
  • relatedSearches : esegue ricerche in base ai dettagli nell'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 luoghi nell'immagine.

Creare un oggetto WebClient e impostare le intestazioni per la richiesta API

Crea un oggetto WebClient e imposta le intestazioni. Tutte le richieste all'API Ricerca Bing richiedono un Ocp-Apim-Subscription-Key. Una POST richiesta di caricamento di un'immagine deve anche specificare 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 della classe WebClientUpLoadFile() formatta i dati per la richiesta POST, inclusa la formattazione di RequestStream e la chiamata a HttpWebRequest.

Chiamare WebClient.UpLoadFile() con l'endpoint /details e il file di immagine da caricare. Usare la risposta JSON per inizializzare un'istanza della SearchResult struttura e archiviare 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>()
};

Questa risposta JSON può quindi essere stampata nella console.

Utilizzare un token di analisi immagine in una richiesta

Per usare il ImageInsightsToken restituito con i risultati di un POST, è possibile aggiungerlo a una richiesta GET. Per 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 luoghi identificabili, questa richiesta restituirà informazioni su di esse.

Passaggi successivi

Vedere anche