Öğ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
- Visual Studio'daki Çözüm Gezgini projenize sağ tıklayın ve menüden NuGet Paketlerini Yönet'i seçin.
Azure kaynağı oluşturma
Aşağıdaki Azure kaynaklarından birini oluşturarak Bing Görsel Arama API'sini kullanmaya başlayın:
- Kaynağı silene kadar Azure portal aracılığıyla kullanılabilir.
- Fiyatlandırma katmanını
S9
seçin.
- 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:
Bu görüntü kırpma alanından bir ImageInfo
nesne oluşturularak ve nesnesi içine VisualSearchRequest
yü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 PagesIncluding
ActionType
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);
}
}