Delen via


Object in afbeelding wissen

U kunt Object wissen gebruiken om objecten uit afbeeldingen te verwijderen. Het model gebruikt zowel een afbeelding als een grijswaardenmasker dat aangeeft dat het object moet worden verwijderd, verwijdert het gemaskeerde gebied uit de afbeelding en vervangt het gewiste gebied door de achtergrond van de afbeelding.

Voor API-details, zie API-referentie voor AI-imagingfuncties.

Zie Inhoudsveiligheid met generatieve AI-API's voor meer informatie over inhoudsbeheer.

Belangrijk

Vereisten voor pakketmanifest: Als u Windows AI imaging-API's wilt gebruiken, moet uw app worden verpakt als een MSIX-pakket met de systemAIModels mogelijkheid die is gedeclareerd in uw Package.appxmanifest. Zorg er bovendien voor dat het kenmerk van MaxVersionTested uw manifest is ingesteld op een recente Windows-versie (bijvoorbeeld 10.0.26226.0 of hoger) om de Windows AI-functies goed te ondersteunen. Het gebruik van oudere waarden kan fouten veroorzaken die niet door app zijn gedeclareerd bij het laden van het 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>

Voorbeeld van afbeeldingsobject wissen

In het volgende voorbeeld ziet u hoe u een object uit een afbeelding verwijdert. In het voorbeeld wordt ervan uitgegaan dat u al software bitmapobjecten (softwareBitmap) voor zowel de afbeelding als het masker hebt. Het masker moet in Gray8-indeling zijn, waarbij elke pixel van het gebied dat moet worden verwijderd is ingesteld op 255 en alle andere pixels zijn ingesteld op 0.

  1. Zorg ervoor dat het model Image Object Erase beschikbaar is door de GetReadyState-methode aan te roepen en te wachten tot de EnsureReadyAsync-methode succesvol is geretourneerd.
  2. Zodra het model Afbeeldingsobject wissen beschikbaar is, maakt u een ImageObjectRemover-object om ernaar te verwijzen.
  3. Verzend tot slot de afbeelding en het masker naar het model met behulp van de methode RemoveFromSoftwareBitmap , die het uiteindelijke resultaat retourneert.
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);

Zie ook