Udostępnij za pośrednictwem


Samouczek: wyodrębnianie szczegółów obrazu przy użyciu interfejsu API wyszukiwania obrazów Bing i języka C#

Ostrzeżenie

30 października 2020 r. interfejsy API wyszukiwania Bing zostały przeniesione z usług Azure AI do usług wyszukiwania Bing. Ta dokumentacja jest udostępniana tylko do celów referencyjnych. Aby uzyskać zaktualizowaną dokumentację, zobacz dokumentację interfejsu API wyszukiwania Bing. Aby uzyskać instrukcje dotyczące tworzenia nowych zasobów platformy Azure na potrzeby wyszukiwania Bing, zobacz Tworzenie zasobu wyszukiwania Bing za pośrednictwem witryny Azure Marketplace.

Istnieje wiele punktów końcowych dostępnych za pośrednictwem interfejsu API wyszukiwania obrazów Bing. Punkt /details końcowy akceptuje żądanie POST z obrazem i może zwrócić różne szczegóły dotyczące obrazu. Ta aplikacja języka C# wysyła obraz przy użyciu tego interfejsu API i wyświetla szczegóły zwrócone przez usługę Bing, które są obiektami JSON, takimi jak następujące:

[Wyniki JSON]

W tym samouczku wyjaśniono, jak:

  • Użyj punktu końcowego wyszukiwania /details obrazów w żądaniu POST
  • Określanie nagłówków żądania
  • Określanie wyników przy użyciu parametrów adresu URL
  • Prześlij dane obrazu i wyślij POST żądanie
  • Drukowanie wyników JSON w konsoli

Wymagania wstępne

Konstruowanie żądania wyszukiwania szczegółów obrazu

Poniżej znajduje się /details punkt końcowy, który akceptuje żądania POST z danymi obrazu w treści żądania. Możesz użyć globalnego punktu końcowego poniżej lub subdomeny niestandardowej punktu końcowego wyświetlanej w witrynie portalu Azure dla twojego zasobu.

https://api.cognitive.microsoft.com/bing/v7.0/images/details

Podczas konstruowania adresu URL modules żądania wyszukiwania parametr jest zgodny z powyższym punktem końcowym i określa typy szczegółów, które będą zawierać wyniki:

  • modules=All
  • modules=RecognizedEntities (osoby lub miejsca widoczne na obrazie)

Określ modules=All w żądaniu POST, aby uzyskać tekst JSON zawierający następujące elementy:

  • bestRepresentativeQuery — zapytanie Bing zwracające obrazy podobne do przekazanego obrazu
  • detectedObjects - obiekty znalezione na obrazie
  • image - metadane obrazu
  • imageInsightsToken — token dla późniejszych żądań GET, które pobierają RecognizedEntities (osoby lub miejsca widoczne na obrazie) z obrazu.
  • imageTags — tagi obrazu
  • pagesIncluding - Strony sieci Web zawierające obraz
  • relatedSearches — wyszukuje na podstawie szczegółów na obrazie.
  • visuallySimilarImages - podobne obrazy w Internecie.

Określ modules=RecognizedEntities w żądaniu POST, aby uzyskać imageInsightsTokentylko element , którego można użyć w kolejnym żądaniu GET w celu zidentyfikowania osób lub miejsc na obrazie.

Tworzenie obiektu WebClient i ustawianie nagłówków dla żądania interfejsu API

WebClient Utwórz obiekt i ustaw nagłówki. Wszystkie żądania do interfejsu API wyszukiwania Bing wymagają elementu Ocp-Apim-Subscription-Key. Żądanie POST przekazania obrazu musi również określać wartość ContentType: multipart/form-data.

WebClient client = new WebClient();
client.Headers["Ocp-Apim-Subscription-Key"] = accessKey;
client.Headers["ContentType"] = "multipart/form-data";

Przekaż obraz i wyświetl wyniki

Klasa WebClient metoda UpLoadFile() formatuje dane na potrzeby żądania POST, w tym formatowanie RequestStream i wywoływanie HttpWebRequest.

Wywołaj WebClient.UpLoadFile() z punktem końcowym /details i plikiem obrazu do przesłania. Użyj odpowiedzi JSON, aby zainicjować wystąpienie SearchResult struktury i zapisać odpowiedź.

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>()
};

Tę odpowiedź JSON można następnie wydrukować w konsoli.

Użyj tokenu informacji o obrazie w żądaniu

Aby użyć ImageInsightsToken, zwróconego wraz z wynikami POST, możesz dodać go do żądania GET. Przykład:

https://api.cognitive.microsoft.com/bing/v7.0/images/details?InsightsToken="bcid_A2C4BB81AA2C9EF8E049C5933C546449*ccid_osS7gaos*mid_BF7CC4FC4A882A3C3D56E644685BFF7B8BACEAF2

Jeśli na obrazie znajdują się możliwe do zidentyfikowania osoby lub miejsca, to żądanie zwróci informacje o nich.

Dalsze kroki

Zobacz także

  • Referencje interfejsu API wyszukiwania obrazów Bing