Freigeben über


Bild-Vordergrundextraktor

Sie können ImageForegroundExtractor verwenden, um den Vordergrund eines Eingabebilds zu segmentieren und Features wie Hintergrundentfernung und Aufklebergenerierung zu aktivieren.

Die zurückgegebene Maske ist im Graustufen-8-Format. Pixelwerte reichen von 0 bis 255, wobei 0 Hintergrundpixel darstellt, 255 Vordergrundpixel darstellt und Zwischenwerte eine Mischung aus Vordergrund- und Hintergrundpixeln angeben.

Api-Details finden Sie in der API-Referenz für KI-Imageerstellungsfeatures.

Details zur Inhaltsmoderation finden Sie unter Inhaltssicherheit mit generativen AI-APIs.

Von Bedeutung

Paketmanifestanforderungen: Um Windows AI-Imageerstellungs-APIs zu verwenden, muss Ihre App als MSIX-Paket mit der systemAIModels in Ihrer Package.appxmanifestApp deklarierten Funktion verpackt werden. Stellen Sie außerdem sicher, dass das Attribut Ihres Manifests MaxVersionTested auf eine aktuelle Windows-Version festgelegt ist (z. B. 10.0.26226.0 oder höher), um die Windows AI-Features richtig zu unterstützen. Die Verwendung älterer Werte kann beim Laden des Modells zu Fehlern "Nicht durch App deklariert" führen.

<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>

Generieren einer Maske aus einem Bitmapbild

  1. Rufen Sie GetReadyState auf, und warten Sie, bis EnsureReadyAsync erfolgreich abgeschlossen wurde, um zu bestätigen, dass das ImageForegroundExtractor-Objekt bereit ist.
  2. Rufen Sie nach abschluss des Modells CreateAsync auf, um ein ImageForegroundExtractor-Objekt zu instanziieren.
  3. Rufen Sie GetMaskFromSoftwareBitmap mit dem Eingabebild auf, um die Vordergrundmaske zu generieren.
using Microsoft.Windows.AI.Imaging;
using Microsoft.Windows.AI;

if (ImageForegroundExtractor.GetReadyState() == AIFeatureReadyState.NotReady)
{
    var result  = await ImageForegroundExtractor.EnsureReadyAsync();
    if (result.Status != AIFeatureReadyResultState.Success)
    {
        throw result.ExtendedError;
    }
}

var model = await ImageForegroundExtractor.CreateAsync();

// Insert your own softwareBitmap here.
var foregroundMask = model.GetMaskFromSoftwareBitmap(softwareBitmap);
#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 (ImageForegroundExtractor::GetReadyState() == AIFeatureReadyState::NotReady)
{
    auto loadResult = ImageForegroundExtractor::EnsureReadyAsync().get();

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

auto model = co_await ImageForegroundExtractor::CreateAsync();

// Insert your own softwareBitmap here.
auto foregroundMask = model.GetMaskFromSoftwareBitmap(softwareBitmap);

Siehe auch