Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Görüntüdeki belirli nesneleri tanımlamak için Görüntü Nesnesi Ayıklayıcı'yı kullanabilirsiniz. Model hem bir görüntü hem de "ipuçları" nesnesi alır ve tanımlanan nesnenin maskesini geri döndürür.
API ayrıntıları için bkz. Yapay zeka görüntüleme özellikleri için API başvurusu.
İçerik denetimi ayrıntıları için bkz. Üretken yapay zeka API'leriyle içerik güvenliği.
Önemli
Paket Bildirimi Gereksinimleri: Windows AI görüntüleme API'lerini kullanmak için uygulamanızın içinde systemAIModelsbildirilen özelliğe sahip Package.appxmanifest bir MSIX paketi olarak paketlenmiş olması gerekir. Ayrıca, Windows yapay zeka özelliklerini düzgün bir şekilde desteklemek için bildiriminizin MaxVersionTested özniteliğinin en son Windows sürümüne (ör. 10.0.26226.0 veya üzeri) ayarlandığından emin olun. Eski değerlerin kullanılması, modeli yüklerken "Uygulama tarafından bildirilmedi" hatalarına neden olabilir.
<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>
İpuçları sağlama
Aşağıdakilerin herhangi bir bileşimi aracılığıyla ipuçları sağlayabilirsiniz:
- Tanımladığınız noktaya ait noktaların koordinatları.
- Tanımladığınız şeye ait olmayan noktaların koordinatları.
- Tanımladığınız şeyi kapsayan koordinat dikdörtgeni.
Ne kadar çok ipucu sağlarsanız, model o kadar kesin olabilir. Yanlış sonuçları veya hataları en aza indirmek için bu ipucu yönergelerini izleyin.
- Doğru olmayan bir maske üretebilecekleri için ipucu olarak birden çok dikdörtgen kullanmaktan kaçının.
- Hariç tutma noktalarını, dahil etme noktaları veya bir dikdörtgen olmadan kullanmaktan kaçının.
- Desteklenen en fazla 32 koordinattan (bir nokta için 1, dikdörtgen için 2) daha fazlasını belirtmeyin çünkü bu bir hata döndürür.
Döndürülen maske gri tonlamalı-8 biçimindedir ve tanımlanan nesnenin pikselleri 255 değerine sahiptir (diğer tümlerinde 0 değeri vardır).
Görüntü Nesnesi Ayıklayıcısı örneği
Aşağıdaki örneklerde, görüntü içindeki bir nesneyi tanımlamanın yolları gösterilmektedir. Örneklerde, giriş için zaten bir yazılım bit eşlem nesnesine (softwareBitmap) sahip olduğunuz varsayılır.
GetReadyState yöntemini çağırıp EnsureReadyAsync yönteminin başarıyla döndürülmesini bekleyerek Görüntü Nesnesi Ayıklayıcısı modelinin kullanılabilir olduğundan emin olun.
Görüntü Nesnesi Ayıklayıcı modeli kullanılabilir olduğunda, buna başvurmak için bir ImageObjectExtractor nesnesi oluşturun.
Görüntüyü CreateWithSoftwareBitmapAsync'e geçirin.
ImageObjectExtractorHint nesnesi oluşturun. Farklı girişlere sahip bir ipucu nesnesi oluşturmanın diğer yolları daha sonra gösterilir.
Son sonucu döndüren GetSoftwareBitmapObjectMask yöntemini kullanarak modele ipucunu gönderin.
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);
Dahil edilen ve dışlanan noktalara sahip ipuçları belirtme
Bu kod parçacığı, ipuçları olarak hem dahil edilen hem de dışlanan noktaların nasıl kullanılacağını gösterir.
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}
}
);
Dikdörtgenle ipuçları belirtme
Bu kod parçacığı, ipucu olarak dikdörtgenin (RectInt32 X, Y, Width, Height) nasıl kullanılacağını gösterir.
ImageObjectExtractorHint hint(
includeRects:
new List<RectInt32> {new RectInt32(370, 278, 285, 126)},
includePoints: null,
excludePoints: null );
ImageObjectExtractorHint hint(
{
RectInt32{370, 278, 285, 126}
},
{},
{}
);