Självstudier: Extrahera avbildningsinformation med hjälp av API för bildsökning i Bing och C#
Varning
Den 30 oktober 2020 flyttade Bing-sökning API:er från Azure AI-tjänster till Bing-sökning Services. Den här dokumentationen tillhandahålls endast som referens. Uppdaterad dokumentation finns i dokumentationen för API:et för Bing-sökning. Anvisningar om hur du skapar nya Azure-resurser för Bing-sökning finns i Skapa en Bing-sökning resurs via Azure Marketplace.
Det finns flera slutpunkter tillgängliga via API för bildsökning i Bing. Slutpunkten /details
accepterar en POST-begäran med en avbildning och kan returnera olika typer av information om avbildningen. Det här C#-programmet skickar en avbildning med hjälp av detta API och visar informationen som returneras av Bing, vilket är JSON-objekt, som t.ex. följande:
I den här självstudien beskrivs hur du:
- Använda
/details
-slutpunkten för Bildsökning i enPOST
-begäran - Ange huvuden för begäran
- Specificera resultet med hjälp av URL-parametrar
- Ladda upp avbildningsdata och skicka
POST
-begäran - Skriv ut JSON-resultat till konsolen
Förutsättningar
- Alla utgåvor av Visual Studio 2017 eller senare.
Skapa en sökbegäran för avbildningsinformation
Följande är /details
-slutpunkten, vilken godkänner POST-förfrågningar med avbildningsdata i brödtexten. Du kan använda den globala slutpunkten nedan eller den anpassade underdomänslutpunkten som visas i Azure Portal för resursen.
https://api.cognitive.microsoft.com/bing/v7.0/images/details
När du skapar sökbegärans URL följer modules
-parametern slutpunkten ovan och anger vilka typer av information som resultatet kommer att innehålla:
modules=All
-
modules=RecognizedEntities
(personer eller platser som visas på bilden)
Specificera modules=All
i POST-begäran för att få JSON-text som innehåller följande:
-
bestRepresentativeQuery
– en Bing-fråga som returnerar bilder som liknar den uppladdade bilden -
detectedObjects
– objekt funna i bilden -
image
– bildens metadata -
imageInsightsToken
– en token för senare GET-förfrågningar som hämtarRecognizedEntities
(personer eller platser som visas på bilden) från bilden. -
imageTags
– taggar för bilden -
pagesIncluding
– webbsidor som inkluderar bilden -
relatedSearches
– sökningar som baseras på informationen i bilden. -
visuallySimilarImages
– liknande bilder på webben.
Specificera modules=RecognizedEntities
i POST-begäran för att bara få imageInsightsToken
, som kan användas i en efterföljande GET-begäran för att identifiera personer eller platser på bilden.
Skapa ett WebClient-objekt och ange huvuden för API-begäran
Skapa ett WebClient
-objekt och konfigurera rubrikerna. Alla förfrågningar till API för sökning i Bing kräver en Ocp-Apim-Subscription-Key
. En POST
-begäran om att ladda upp en bild måste även specificera ContentType: multipart/form-data
.
WebClient client = new WebClient();
client.Headers["Ocp-Apim-Subscription-Key"] = accessKey;
client.Headers["ContentType"] = "multipart/form-data";
Ladda upp bilden och visa resultaten
WebClient
-klassens UpLoadFile()
-metod formaterar data för POST
-begäran, bl.a. för att formatera RequestStream
och anropa HttpWebRequest
.
Anropa WebClient.UpLoadFile()
med /details
-slutpunkten och den avbildningsfil som ska laddas upp. Använd JSON-svaret till att initiera en instans av SearchResult
-strukturen och spara svaret.
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>()
};
Det här JSON-svaret kan sedan skrivas ut till konsolen.
Använda en avbildningsinsiktstoken i en begäran
Om du vill använda ImageInsightsToken
som returnerades med resultatet av en POST
, så kan du lägga till den i en GET
begäran. Exempel:
https://api.cognitive.microsoft.com/bing/v7.0/images/details?InsightsToken="bcid_A2C4BB81AA2C9EF8E049C5933C546449*ccid_osS7gaos*mid_BF7CC4FC4A882A3C3D56E644685BFF7B8BACEAF2
Om det finns identifierbara personer eller platser på bilden returnerar begäran information om dem.