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

Uyarı

Bing Arama API'leri bilişsel hizmetlerden Bing Arama hizmetlere taşınıyor. 30 ekim 2020 ' den itibaren, buradabelgelenen işlem sonrasında Bing arama yeni örneklerin sağlanması gerekir. Bilişsel hizmetler kullanılarak sağlanan Bing Arama API'leri, sonraki üç yıl boyunca veya Kurumsal Anlaşma sonuna kadar, hangisi önce gerçekleşene kadar desteklenecektir. Geçiş yönergeleri için bkz. Bing arama Services.

Bing Görsel Arama SDK, benzer çevrimiçi görüntüleri bulmadan önce bir görüntüyü kırpmanızı sağlar. Bu uygulama, birden fazla kişi içeren bir görüntüden tek bir kişiyi kırpar ve sonra çevrimiçi bulunan benzer görüntüleri içeren arama sonuçları döndürür.

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

Bu öğreticide nasıl yapılacağı gösterilmektedir:

  • Bing Görsel Arama SDK kullanarak istek gönderme
  • Bing Görsel Arama ile aramak için bir görüntünün alanını kırpın
  • Yanıtı al ve işle
  • Yanıtta eylem öğelerinin URL 'Lerini bulun

Önkoşullar

  • Herhangi bir Visual Studio 2019sü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'si kullanmaya başlayın:

Bing Arama v7 kaynağı

  • Kaynak silininceye kadar Azure portal ile kullanılabilir.
  • S9Fiyatlandırma katmanını seçin.

Çoklu hizmet kaynağı

  • Kaynak silininceye kadar Azure portal ile kullanılabilir.
  • Birden çok bilişsel hizmetler genelinde uygulamalarınız için aynı anahtarı ve uç noktayı kullanın.

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

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

Microsoft Üst Düzey Liderlik Ekibi

Bu görüntü, ImageInfo kırpma alanından bir nesne oluşturularak ve ImageInfo nesnesi bir öğesine yüklenirken kırpılır VisualSearchRequest . ImageInfoNesne Ayrıca 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://docs.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 görüntüleri ara

Değişkeni, VisualSearchRequest görüntünün kırpma alanı ve URL 'si hakkındaki bilgileri 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 al ImageModuleAction

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

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

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

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

EylemTürü URL
Websearchurl dahil Pages
Mosearchurl 'Yi yeniden boyutlandırır
VisualSearch WebSearchURL 'Si
Imagebyıd WebSearchURL
Relatedaramaweb Searchurl
Entity-> WebSearchUrl https : //www.bing.com/cr?IG=E40D0E1A13404994ACB073504BC937A4&CID = 03DCF882D7386A442137F49BD6596BEF&RD = 1&h = BvvDoRtmZ35Xc_UZE4lZx6_eg7FHgcCkigU1D98NHQo&v = 1&r = https %3 a %2 f %2 f www. 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 %3 a %2 f %2 f www. 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 %3 a %2 f %2 f www. Bing. com% 2fimages% 2fsearch% 3Fq% 3dSatya% 2bNadella&p = DevEx, 5384.1

Yukarıda gösterildiği gibi, Entity ActionType tanınabilir bir kişi, yer veya bir şey 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 yönlendirir.

Görüntüler için URL 'Ler Al PagesIncluding ActionType

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ğıdaki PagesIncluding eylem türünü öğesine yayınlar ImageModuleAction 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?