Öğretici: C için Bing Görsel Arama SDK'sı ile bir görüntüyü kırpma#

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 Görsel Arama SDK'sı, benzer çevrimiçi görüntüleri bulmadan önce bir görüntüyü kırpmanıza olanak tanır. Bu uygulama, birkaç kişi içeren bir görüntüden tek bir kişiyi kırpıyor ve ardından çevrimiçi ortamda bulunan benzer görüntüleri içeren arama sonuçlarını döndürüyor.

Bu uygulamanın tam kaynak kodu , GitHub'da ek hata işleme ve ek açıklamalar ile kullanılabilir.

Bu öğreticide şunların nasıl yapıldığını gösterilmektedir:

  • Bing Görsel Arama SDK'sını kullanarak istek gönderme
  • Bing Görsel Arama ile aranacak resim alanını kırpma
  • Yanıtı alma ve işleme
  • Yanıtta eylem öğelerinin URL'lerini bulma

Önkoşullar

  • Visual Studio 2019'un herhangi bir sürümü.
  • Linux/MacOS kullanıyorsanız bu uygulama, Mono kullanılarak çalıştırılabilir.
  • NuGet Özel Arama paketinin yüklenmiş olması.
    • Visual Studio'daki Çözüm Gezgini projenize sağ tıklayın ve menüden NuGet Paketlerini Yönet'i seçin. Microsoft.Azure.CognitiveServices.Search.CustomSearch paketini yükleyin. NuGet Özel Arama paketini yüklediğinizde aşağıdaki derlemeler de yüklenir:
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Azure kaynağı oluşturma

Aşağıdaki Azure kaynaklarından birini oluşturarak Bing Görsel Arama API'sini kullanmaya başlayın:

v7 kaynağını Bing Arama

  • Kaynağı silene kadar Azure portal aracılığıyla kullanılabilir.
  • Fiyatlandırma katmanını S9 seçin.

Çok hizmetli kaynak

  • Kaynağı silene kadar Azure portal aracılığıyla kullanılabilir.
  • Birden çok Azure AI hizmeti genelinde uygulamalarınız için aynı anahtarı ve uç noktayı kullanın.

Görüntü kırpma alanını belirtme

Bu uygulama, Microsoft üst düzey liderlik ekibinin bu görüntüsünün bir alanını kırptı. Bu kırpma alanı, tüm görüntünün yüzdesi olarak gösterilen sol üst ve sağ alt koordinatlar kullanılarak tanımlanır:

Microsoft Üst Düzey Liderlik Ekibi

Bu görüntü kırpma alanından bir ImageInfo nesne oluşturularak ve nesnesi içine VisualSearchRequestyüklenerek ImageInfo kırpılır. ImageInfo nesnesi görüntünün URL'sini de içerir:

CropArea CropArea = new CropArea(top: (float)0.01, bottom: (float)0.30, left: (float)0.01, right: (float)0.20);
string imageURL = "https://learn.microsoft.com/azure/cognitive-services/Bing-visual-search/media/ms_srleaders.jpg";
ImageInfo imageInfo = new ImageInfo(cropArea: CropArea, url: imageURL);

VisualSearchRequest visualSearchRequest = new VisualSearchRequest(imageInfo: imageInfo);

Kırpma alanına benzer resimleri arama

değişkeni VisualSearchRequest görüntünün kırpma alanı ve URL'si hakkında bilgi içerir. VisualSearchMethodAsync() yöntemi sonuçları alır:

Console.WriteLine("\r\nSending visual search request with knowledgeRequest that contains URL and crop area");
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: visualSearchRequest).Result;

URL verilerini alma ImageModuleAction

Bing Görsel Arama sonuçları nesnelerdir ImageTag . Her etiket bir ImageAction nesneleri listesi içerir. Her ImageAction biri, eylemin türüne bağlı değerlerin listesi olan bir alan içerir Data .

Aşağıdaki kodla çeşitli türleri yazdırabilirsiniz:

Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " -> WebSearchUrl: " + i.WebSearchUrl);

Tam uygulama şunları döndürür:

EylemTürü URL
PagesIncluding WebSearchURL
MoreSizes WebSearchURL
VisualSearch WebSearchURL
ImageById WebSearchURL
RelatedSearches WebSearchURL
Varlık -> WebSearchUrl https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=BvvDoRtmZ35Xc_UZE4lZx6_eg7FHgcCkigU1D98NHQo&v=1&r=https %3a%2f%2fwww.bing.com%2fsearch%3fq%3dSatya%2bNadella&p=DevEx,5380.1
TopicResults -> WebSearchUrl https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=3QGtxPb3W9LemuHRxAlW4CW7XN4sPkUYCUynxAqI9zQ&v=1&r=https%3a%2f%2fwww.bing.com%2fdiscover%2fnadella%2bsatya&p=DevEx,5382.1
ImageResults -> WebSearchUrl https://www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4& CID=03DCF882D7386A442137F49BD6596BEF&rd=1&h=l-WNHO89Kkw69AmIGe2MhlUp6MxR6YsJszgOuM5sVLs&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3dSatya%2bNadella&p=DevEx,5384.1

Yukarıda gösterildiği gibi, ActionType tanınabilir Entity bir kişi, yer veya öğe hakkında bilgi döndüren bir Bing arama sorgusu içerir. TopicResults ve ImageResults türleri, ilgili görüntülerin sorgularını içerir. Listedeki URL'ler Bing arama sonuçlarına bağlanır.

Resimler için PagesIncludingActionType URL'leri alma

Gerçek görüntü URL’lerini almak için, bir ActionType türünü ImageModuleAction olarak okuyan bir tür dönüştürme gerekir. Bu tür ise değerler listesine sahip bir Data öğesi içerir. Her değer, bir görüntünün URL’sidir. Aşağıdakiler PagesIncluding eylem türünü olarak ImageModuleAction atar ve değerleri okur:

    if (i.ActionType == "PagesIncluding")
    {
        foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
        {
            Console.WriteLine("ContentURL: " + o.ContentUrl);
        }
    }

Sonraki adımlar

Ayrıca bkz.

Bing Görsel Arama API’si nedir?