Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat menggunakan Image Object Extractor untuk mengidentifikasi objek tertentu dalam gambar. Model memproses gambar bersama dengan objek "petunjuk" dan menghasilkan sebuah mask dari objek yang telah diidentifikasi.
Untuk detail API, lihat API ref untuk fitur pencitraan AI.
Untuk detail moderasi konten, lihat Keamanan konten dengan API AI generatif.
Penting
Persyaratan Manifes Paket: Untuk menggunakan API pencitraan Windows AI, aplikasi Anda harus dikemas sebagai paket MSIX dengan kemampuan yang systemAIModels dideklarasikan dalam .Package.appxmanifest Selain itu, pastikan atribut manifes MaxVersionTested Anda diatur ke versi Windows terbaru (misalnya, 10.0.26226.0 atau yang lebih baru) untuk mendukung fitur Windows AI dengan benar. Menggunakan nilai yang lebih lama dapat menyebabkan kesalahan "Tidak dideklarasikan oleh aplikasi" saat memuat model.
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
</Dependencies>
Memberikan petunjuk
Anda dapat memberikan petunjuk melalui kombinasi apa pun dari yang berikut ini:
- Koordinat untuk titik yang sedang Anda identifikasi.
- Koordinat untuk titik yang tidak termasuk dalam apa yang Anda identifikasi.
- Persegi panjang koordinat yang mencakup apa yang Anda identifikasi.
Semakin banyak petunjuk yang Anda berikan, semakin tepat modelnya. Ikuti panduan petunjuk ini untuk meminimalkan hasil atau kesalahan yang tidak akurat.
- Hindari menggunakan beberapa persegi panjang pada petunjuk karena dapat menghasilkan masker yang tidak akurat.
- Hindari menggunakan titik pengecualian secara eksklusif tanpa menyertakan titik atau persegi panjang.
- Jangan tentukan lebih dari maksimum 32 koordinat yang didukung (1 untuk titik, 2 untuk persegi panjang) karena ini akan mengembalikan kesalahan.
Masker yang dikembalikan dalam format greyscale-8 dengan piksel masker untuk objek yang diidentifikasi memiliki nilai 255 (yang lainnya memiliki nilai 0).
Contoh Ekstraktor Objek Gambar
Contoh berikut menunjukkan cara untuk mengidentifikasi objek dalam gambar. Contoh mengasumsikan bahwa Anda sudah memiliki objek bitmap perangkat lunak (softwareBitmap) untuk input.
Pastikan model Image Object Extractor tersedia dengan memanggil metode GetReadyState dan menunggu metode EnsureReadyAsync berhasil dikembalikan.
Setelah model Image Object Extractor tersedia, buat objek ImageObjectExtractor untuk mereferensikannya.
Teruskan gambar ke CreateWithSoftwareBitmapAsync.
Buat objek ImageObjectExtractorHint . Cara lain untuk membuat objek petunjuk dengan input yang berbeda ditunjukkan nanti.
Kirim petunjuk ke model menggunakan metode GetSoftwareBitmapObjectMask , yang mengembalikan hasil akhir.
using Microsoft.Graphics.Imaging;
using Microsoft.Windows.AI;
using Microsoft.Windows.Management.Deployment;
using Windows.Graphics.Imaging;
if (ImageObjectExtractor.GetReadyState() == AIFeatureReadyState.NotReady)
{
var result = await ImageObjectExtractor.EnsureReadyAsync();
if (result.Status != AIFeatureReadyResultState.Success)
{
throw result.ExtendedError;
}
}
ImageObjectExtractor imageObjectExtractor = await ImageObjectExtractor.CreateWithSoftwareBitmapAsync(softwareBitmap);
ImageObjectExtractorHint hint = new ImageObjectExtractorHint{
includeRects: null,
includePoints:
new List<PointInt32> { new PointInt32(306, 212),
new PointInt32(216, 336)},
excludePoints: null};
SoftwareBitmap finalImage = imageObjectExtractor.GetSoftwareBitmapObjectMask(hint);
#include <winrt/Microsoft.Graphics.Imaging.h>
#include <winrt/Microsoft.Windows.AI.Imaging.h>
#include <winrt/Windows.Graphics.Imaging.h>
#include <winrt/Windows.Foundation.h>
using namespace winrt::Microsoft::Graphics::Imaging;
using namespace winrt::Microsoft::Windows::AI.Imaging;
using namespace winrt::Windows::Graphics::Imaging;
using namespace winrt::Windows::Foundation;
if (ImageObjectExtractor::GetReadyState() == AIFeatureReadyState::NotReady)
{
auto loadResult = ImageObjectExtractor::EnsureReadyAsync().get();
if (loadResult.Status() != AIFeatureReadyResultState::Success)
{
throw winrt::hresult_error(loadResult.ExtendedError());
}
}
ImageObjectExtractor imageObjectExtractor = ImageObjectExtractor::CreateWithSoftwareBitmapAsync(softwareBitmap).get();
ImageObjectExtractorHint hint(
{},
{
Windows::Graphics::PointInt32{306, 212},
Windows::Graphics::PointInt32{216, 336}
},
{}
);
Windows::Graphics::Imaging::SoftwareBitmap finalImage = imageObjectExtractor.GetSoftwareBitmapObjectMask(hint);
Tentukan petunjuk dengan poin yang disertakan dan dikecualikan
Cuplikan kode ini menunjukkan cara menggunakan poin yang disertakan dan dikecualikan sebagai petunjuk.
ImageObjectExtractorHint hint(
includeRects: null,
includePoints:
new List<PointInt32> { new PointInt32(150, 90),
new PointInt32(216, 336),
new PointInt32(550, 330)},
excludePoints:
new List<PointInt32> { new PointInt32(306, 212) });
ImageObjectExtractorHint hint(
{},
{
PointInt32{150, 90},
PointInt32{216, 336},
PointInt32{550, 330}
},
{
PointInt32{306, 212}
}
);
Tentukan petunjuk dengan persegi panjang
Cuplikan kode ini menunjukkan cara menggunakan persegi panjang (RectInt32 X, Y, Width, Height) sebagai petunjuk.
ImageObjectExtractorHint hint(
includeRects:
new List<RectInt32> {new RectInt32(370, 278, 285, 126)},
includePoints: null,
excludePoints: null );
ImageObjectExtractorHint hint(
{
RectInt32{370, 278, 285, 126}
},
{},
{}
);