Tutorial: Memangkas gambar dengan SDK Bing Visual Search untuk C#
Peringatan
Pada 30 Oktober 2020, API Bing Search dipindahkan dari layanan Azure AI ke Bing Search Services. Dokumentasi ini disediakan hanya untuk referensi. Untuk dokumentasi terbaru, lihat dokumentasi Bing Search API. Untuk petunjuk tentang cara membuat sumber daya Azure baru untuk pencarian Bing, lihat Membuat sumber daya Pencarian Bing melalui Marketplace Azure.
SDK Bing Visual Search memungkinkan Anda untuk memangkas gambar sebelum menemukan gambar online yang serupa. Aplikasi ini memangkas satu orang dari gambar yang berisi beberapa orang, lalu mengembalikan hasil pencarian yang berisi gambar serupa yang ditemukan secara online.
Kode sumber lengkap untuk aplikasi ini tersedia dengan penanganan kesalahan tambahan dan anotasi pada GitHub.
Tutorial ini mengilustrasikan cara:
- Mengirim permintaan menggunakan SDK Bing Visual Search
- Memangkas area gambar untuk dicari dengan Bing Visual Search
- Menerima dan menangani respons
- Menemukan URL item tindakan dalam respons
Prasyarat
- Setiap edisi Visual Studio 2019.
- Jika Anda menggunakan Linux/MacOS, aplikasi ini dapat dijalankan menggunakan Mono.
- Paket NuGet Custom Search terinstal.
- Dari Penjelajah Solusi di Visual Studio, klik kanan pada proyek Anda dan pilih Kelola Paket NuGet dari menu. Menginstal paket
Microsoft.Azure.CognitiveServices.Search.CustomSearch
. Menginstal paket Custom Search NuGet juga akan menginstal rakitan berikut:- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
- Dari Penjelajah Solusi di Visual Studio, klik kanan pada proyek Anda dan pilih Kelola Paket NuGet dari menu. Menginstal paket
Membuat grup sumber daya Azure
Mulai gunakan Bing Visual Search API dengan membuat salah satu sumber daya Azure berikut:
- Tersedia melalui portal Microsoft Azure hingga Anda menghapus sumber daya.
- Pilih tingkat harga
S9
.
- Tersedia melalui portal Microsoft Azure hingga Anda menghapus sumber daya.
- Gunakan kunci dan titik akhir yang sama untuk aplikasi Anda, di beberapa layanan Azure AI.
Menentukan area pemangkasan gambar
Aplikasi ini memangkas area gambar tim kepemimpinan senior Microsoft ini. Area pemangkasan ini ditentukan menggunakan koordinat kiri atas dan kanan bawah, yang direpresentasikan sebagai persentase dari keseluruhan gambar:
Gambar ini dipangkas dengan membuat objek ImageInfo
dari area pemangkasan, dan memuat objek ImageInfo
ke dalam VisualSearchRequest
. Objek ImageInfo
juga menyertakan URL gambar:
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);
Mencari gambar yang mirip dengan area pemangkasan
Variabel VisualSearchRequest
berisi informasi tentang area pemangkasan gambar dan URL-nya. Metode VisualSearchMethodAsync()
mendapatkan hasil:
Console.WriteLine("\r\nSending visual search request with knowledgeRequest that contains URL and crop area");
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: visualSearchRequest).Result;
Mendapatkan data URL dari ImageModuleAction
Hasil Bing Visual Search adalah objek ImageTag
. Setiap tag berisi daftar objek ImageAction
. Setiap ImageAction
berisi bidang Data
, yang merupakan daftar nilai yang bergantung pada jenis tindakan.
Anda dapat mencetak berbagai jenis dengan kode berikut:
Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " -> WebSearchUrl: " + i.WebSearchUrl);
Aplikasi lengkap mengembalikan:
ActionType | URL |
---|---|
PagesIncluding WebSearchURL | |
MoreSizes WebSearchURL | |
VisualSearch WebSearchURL | |
ImageById WebSearchURL | |
RelatedSearches WebSearchURL | |
Entitas -> 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 |
Seperti yang ditunjukkan di atas, Entity
ActionType berisi kueri pencarian Bing yang mengembalikan informasi tentang orang, tempat, atau benda yang dapat dikenali. Jenis TopicResults
dan ImageResults
berisi kueri untuk gambar terkait. URL dalam daftar tertaut ke hasil pencarian Bing.
Mendapatkan URL untuk gambar PagesIncluding
ActionType
Mendapatkan URL gambar yang sebenarnya memerlukan pemeran yang membaca ActionType
sebagai ImageModuleAction
, yang berisi elemen Data
dengan daftar nilai. Setiap nilai adalah URL gambar. Berikut ini menampilkan jenis tindakan PagesIncluding
ke ImageModuleAction
dan membaca nilainya:
if (i.ActionType == "PagesIncluding")
{
foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
{
Console.WriteLine("ContentURL: " + o.ContentUrl);
}
}