共用方式為


教學課程:使用 Bing 影像搜尋 API 和 C 擷取影像詳細數據#

警告

在 2020 年 10 月 30 日,Bing 搜尋 API 從 Azure AI 服務移至 Bing 搜尋服務。 本文件僅供參考之用。 如需更新的文件,請參閱 Bing 搜尋 API 文件。 如需針對 Bing 搜尋建立新 Azure 資源的指示,請參閱透過 Azure Marketplace 建立 Bing 搜尋資源

透過 Bing 影像搜尋 API 提供多個 端點 。 端點 /details 接受具有影像的POST要求,而且可以傳回有關映像的各種詳細數據。 此 C# 應用程式會使用此 API 傳送影像,並顯示 Bing 所傳回的詳細數據,也就是 JSON 物件,如下所示:

[JSON 結果]

本教學課程說明如何:

  • /details要求中使用影像搜尋POST端點
  • 指定要求的標頭
  • 使用 URL 參數來指定結果
  • 上傳影像數據並傳送 POST 要求
  • 將 JSON 結果列印至主控台

先決條件

建構影像詳細數據搜尋要求

以下是 /details 端點,它可以接受包含影像數據的 POST 請求。 您可以使用下方的全域端點,或資源 Azure 入口網站中顯示的 自定義子域 端點。

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

建構搜尋要求 URL 時, modules 參數會遵循上述端點,並指定結果將包含的詳細數據類型:

  • modules=All
  • modules=RecognizedEntities (圖像中可見的人或地點)

在 POST 要求中指定 modules=All ,以取得包含下列內容的 JSON 文字:

  • bestRepresentativeQuery - 傳回與所上傳影像相似的 Bing 查詢結果
  • detectedObjects - 影像中找到的物件
  • image - 影像的元數據
  • imageInsightsToken - 用於稍後的 GET 請求的權杖,可以從影像中獲得 RecognizedEntities (顯示在人或地點的圖像)。
  • imageTags - 影像的標籤
  • pagesIncluding - 包含影像的網頁
  • relatedSearches - 根據影像中的詳細數據進行搜尋。
  • visuallySimilarImages - 網站上的類似影像。

在 POST 要求中指定 modules=RecognizedEntities ,以便只取得 imageInsightsToken,這可用於後續的 GET 要求,以識別影像中的人員或位置。

建立 WebClient 物件,並設定 API 要求的標頭

建立 WebClient 物件,並設定標頭。 Bing 搜尋 API 的所有請求都需要 Ocp-Apim-Subscription-KeyPOST上傳影像的要求也必須指定 ContentType: multipart/form-data

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

上傳影像,並顯示結果

類別WebClientUpLoadFile()方法會格式化POST請求中的數據,包括格式化RequestStream和呼叫HttpWebRequest

請呼叫WebClient.UpLoadFile(),並使用/details端點以上傳圖像檔。 使用 JSON 回應來初始化 結構的實例 SearchResult ,並儲存回應。

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

然後,此 JSON 回應可以列印至主控台。

在要求中使用圖像分析令牌

若要使用隨著 ImageInsightsToken 結果傳回的 POST,您可以將它新增至 GET 要求。 例如:

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

如果影像中有可識別的人員或位置,則此要求會傳回其相關信息。

後續步驟

另請參閱