Öğretici: Bing Resim Arama API’si ve C# kullanarak görüntü ayrıntılarını ayıklama

Uyarı

30 Ekim 2020'de Bing Arama API'leri Azure yapay zeka hizmetlerinden Bing Arama Hizmetlerine taşındı. Bu belgeler yalnızca başvuru için sağlanır. Güncelleştirilmiş belgeler için Bing arama API'sinin belgelerine bakın. Bing araması için yeni Azure kaynakları oluşturma yönergeleri için bkz. Azure Market aracılığıyla Bing Arama kaynağı oluşturma.

Bing Resim Arama API'si aracılığıyla kullanılabilir olan birden çok uç nokta vardır. /details uç noktası bir görüntü içeren POST isteğini kabul eder ve görüntüyle ilgili çeşitli ayrıntılar döndürebilir. Bu C# uygulaması, bu API’yi kullanarak bir görüntü gönderir ve aşağıda örnekleri verilen JSON nesneleri olan, Bing tarafından döndürülen ayrıntıları görüntüler:

[JSON sonuçları]

Bu öğreticide, aşağıdaki işlemlerin nasıl yapılacağı açıklanmaktadır:

  • POST isteğinde Resim Arama /details uç noktasını kullanma
  • İstek için üst bilgileri belirtme
  • Sonuçları belirtmek için URL parametrelerini kullanma
  • Görüntü verilerini karşıya yükleme ve POST isteği gönderme
  • JSON sonuçlarını konsolda yazdırma

Önkoşullar

Görüntü ayrıntıları arama isteği oluşturma

Aşağıda, isteğin gövdesinde görüntü verilerinin yer aldığı POST isteklerini kabul eden /details uç noktası verilmiştir. Aşağıdaki genel uç noktayı veya kaynağınızın Azure portal görüntülenen özel alt etki alanı uç noktasını kullanabilirsiniz.

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

Arama isteği URL’si oluşturulurken modules parametresi yukarıdaki uç noktayı izler ve sonuçların içereceği ayrıntı türlerini belirtir:

  • modules=All
  • modules=RecognizedEntities (görüntüde görünen kişiler veya yerler)

Aşağıdakileri içeren JSON metnini almak için POST isteğinde modules=All değerini belirtin:

  • bestRepresentativeQuery - karşıya yüklenen görüntüye benzer görüntüleri döndüren bir Bing sorgusu
  • detectedObjects - görüntüde bulunan nesneler
  • image - görüntünün meta verileri
  • imageInsightsToken - görüntüden RecognizedEntities (görüntüde görünen kişiler veya yerler) alan sonraki GET istekleri için bir belirteç.
  • imageTags - görüntünün etiketleri
  • pagesIncluding - görüntüyü içeren web sayfaları
  • relatedSearches - görüntüdeki ayrıntılara dayalı aramalar.
  • visuallySimilarImages - web üzerindeki benzer görüntüler.

Yalnızca, görüntüdeki kişileri veya yerleri belirlemek için sonraki GET isteğinde kullanılabilecek imageInsightsToken öğesini almak için POST isteğinde modules=RecognizedEntities değerini belirtin.

WebClient nesnesi oluşturma ve API isteği için üst bilgileri ayarlama

Bir WebClient nesnesi oluşturun ve üst bilgileri ayarlayın. Bing Arama API’sine yönelik tüm istekler için bir Ocp-Apim-Subscription-Key gerekir. Görüntü karşıya yüklemeye ilişkin POST isteği, ContentType: multipart/form-data değerini de belirtmelidir.

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

Görüntüyü karşıya yükleme ve sonuçları görüntüleme

WebClient sınıfının UpLoadFile() yöntemi, RequestStream öğesinin biçimlendirilmesi ve HttpWebRequest çağrısı da dahil olmak üzere POST isteği için verileri biçimlendirir.

/details uç noktası ve karşıya yüklenecek görüntü dosyası ile WebClient.UpLoadFile() çağrısı yapın. SearchResult yapısı örneğini başlatmak ve yanıtı depolamak için JSON yanıtını kullanın.

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

Bu JSON yanıtı daha sonra konsola yazdırılabilir.

İstekte görüntü öngörüleri belirtecini kullanma

POST sonuçlarıyla birlikte döndürülen ImageInsightsToken öğesini kullanmak için bunu bir GET isteğine ekleyebilirsiniz. Örnek:

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

Görüntüde tanımlanabilir kişiler veya yerler varsa bu istek bunlarla ilgili bilgileri döndürür.

Sonraki adımlar

Ayrıca bkz.