Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Afbeeldingsobjectextractor kan worden gebruikt om specifieke objecten in een afbeelding te identificeren. Het model neemt zowel een afbeelding als een hints-object en geeft een masker van het geïdentificeerde object terug.
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>
Hints geven
Hints kunnen worden verstrekt via elke combinatie van het volgende:
- Coördinaten voor punten die horen bij wat u identificeert.
- Coördinaten voor punten die niet horen bij wat u identificeert.
- Een coördinaatrechthoek die insluit wat u identificeert.
Hoe meer hints u opgeeft, hoe nauwkeuriger het model kan zijn. Volg deze hintrichtlijnen om onjuiste resultaten of fouten te minimaliseren.
- Vermijd meerdere rechthoeken te gebruiken in een hint, omdat ze een onnauwkeurig masker kunnen veroorzaken.
- Vermijd het gebruik van uitsluitend uitsluitingspunten zonder inclusiepunten of een rechthoek.
- Geef niet meer op dan het ondersteunde maximum van 32 coördinaten (1 voor een punt, 2 voor een rechthoek), omdat hiermee een fout wordt geretourneerd.
Het geretourneerde masker heeft een grijswaarden-8-indeling met de pixels van het masker voor het geïdentificeerde object met een waarde van 255 (alle andere objecten met een waarde van 0).
Voorbeeld van afbeeldingsobjectextractor
In de volgende voorbeelden ziet u manieren om een object in een afbeelding te identificeren. In de voorbeelden wordt ervan uitgegaan dat u al een software bitmapobject (softwareBitmap) voor de invoer hebt.
Zorg ervoor dat het model Image Object Extractor beschikbaar is door de GetReadyState methode aan te roepen en te wachten totdat de EnsureReadyAsync methode succesvol is geretourneerd.
Zodra het model Image Object Extractor beschikbaar is, maakt u een ImageObjectExtractor-object om ernaar te verwijzen.
Geef de afbeelding door aan CreateWithSoftwareBitmapAsync.
Maak een ImageObjectExtractorHint-object . Andere manieren om een hintobject met verschillende invoer te maken, worden later gedemonstreerd.
Verzend de hint naar het model met behulp van de methode GetSoftwareBitmapObjectMask , die het uiteindelijke resultaat retourneert.
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);
Hints opgeven met opgenomen en uitgesloten punten
Dit codefragment laat zien hoe u zowel opgenomen als uitgesloten punten gebruikt als hints.
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}
}
);
Hints opgeven met rechthoek
Dit codefragment laat zien hoe u een rechthoek (RectInt32 is X, Y, Width, Height) gebruikt als hint.
ImageObjectExtractorHint hint(
includeRects:
new List<RectInt32> {new RectInt32(370, 278, 285, 126)},
includePoints: null,
excludePoints: null );
ImageObjectExtractorHint hint(
{
RectInt32{370, 278, 285, 126}
},
{},
{}
);