Aracılığıyla paylaş


Görüntü Nesnesi Silme

Resimlerden nesneleri kaldırmak için Nesne Silme'yi kullanabilirsiniz. Model, kaldırılacak nesneyi belirten hem görüntü hem de gri tonlamalı bir maske alır, maskelenmiş alanı görüntüden siler ve silinen alanı görüntü arka planıyla değiştirir.

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>

Görüntü Nesnesi Silme örneği

Aşağıdaki örnekte bir nesnenin görüntüden nasıl kaldırılacağı gösterilmektedir. Örnekte hem görüntü hem de maske için yazılım bit eşlem nesneleriniz (softwareBitmap) olduğu varsayılır. Maske, kaldırılacak alanın her pikseli 255 ve diğer tüm piksellerin 0 olarak ayarlandığı Gri8 biçiminde olmalıdır.

  1. GetReadyState yöntemini çağırıp EnsureReadyAsync yönteminin başarıyla döndürülmesini bekleyerek Görüntü Nesnesi Silme modelinin kullanılabilir olduğundan emin olun.
  2. Görüntü Nesnesi Silme modeli kullanılabilir olduğunda, başvurmak için bir ImageObjectRemover nesnesi oluşturun.
  3. Son olarak, son sonucu döndüren RemoveFromSoftwareBitmap yöntemini kullanarak görüntüyü ve maskeyi modele gönderin.
using Microsoft.Graphics.Imaging;
using Microsoft.Windows.AI;
using Microsoft.Windows.Management.Deployment;
using Windows.Graphics.Imaging;

if (ImageObjectRemover.GetReadyState() == AIFeatureReadyState.NotReady) 
{
    var result = await ImageObjectRemover.EnsureReadyAsync();
    if (result.Status != AIFeatureReadyResultState.Success)
    {
        throw result.ExtendedError;
    }
}
ImageObjectRemover imageObjectRemover = await ImageObjectRemover.CreateAsync();
SoftwareBitmap finalImage = imageObjectRemover.RemoveFromSoftwareBitmap(imageBitmap, maskBitmap); // Insert your own imagebitmap and maskbitmap
#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 (ImageObjectRemover::GetReadyState() == AIFeatureReadyState::NotReady)
{
    auto loadResult = ImageObjectRemover::EnsureReadyAsync().get();

    if (loadResult.Status() != AIFeatureReadyResultState::Success)
    {
        throw winrt::hresult_error(loadResult.ExtendedError());
    }
}

ImageObjectRemover imageObjectRemover = ImageObjectRemover::CreateAsync().get();
// Insert your own imagebitmap and maskbitmap
Windows::Graphics::Imaging::SoftwareBitmap buffer = 
    imageObjectRemover.RemoveFromSoftwareBitmap(imageBitmap, maskBitmap);

Ayrıca bakınız