Tutorial: Memangkas gambar dengan SDK Bing Visual Search untuk C#

Peringatan

Bing Search API berpindah dari Cognitive Services ke Bing Search Services. Mulai 30 Oktober 2020, setiap instans baru Bing Search perlu diprovisikan dengan mengikuti proses yang didokumentasikan di sini. Bing Search API yang diprovisikan menggunakan Cognitive Services akan didukung selama tiga tahun ke depan atau hingga akhir Perjanjian Enterprise Anda, mana saja yang lebih dulu. Untuk mengetahui petunjuk migrasi, lihat Bing Search Services.

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

Membuat grup sumber daya Azure

Mulai gunakan Bing Visual Search API dengan membuat salah satu sumber daya Azure berikut:

Sumber daya Bing Search v7

  • Tersedia melalui portal Microsoft Azure hingga Anda menghapus sumber daya.
  • Pilih tingkat harga S9.

Sumber daya multi-layanan

  • Tersedia melalui portal Microsoft Azure hingga Anda menghapus sumber daya.
  • Gunakan kunci dan titik akhir yang sama untuk aplikasi Anda, di beberapa Cognitive Services.

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:

Tim Kepemimpinan Senior Microsoft

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://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);

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%2f 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%3a%2f%2f 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%3a%2f%2f www.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);
        }
    }

Langkah berikutnya

Lihat juga

Apa yang dimaksud dengan Bing Visual Search API?