Öğ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:
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
- Visual Studio 2017 veya sonraki sürümleri.
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 sorgusudetectedObjects
- görüntüde bulunan nesnelerimage
- görüntünün meta verileriimageInsightsToken
- görüntüdenRecognizedEntities
(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 etiketleripagesIncluding
- 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.