Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az Image Object Extractor használatával azonosíthatja a képek adott objektumait. A modell egy képet és egy "tippeket" tartalmazó objektumot is használ, és visszaadja az azonosított objektum maszkját.
Az API részleteiért tekintse meg az AI képalkotó funkciók API referenciáját.
A tartalommoderálási részletekérdekében lásd: Tartalombiztonság generatív AI API-kkal.
Fontos
Csomagjegyzékre vonatkozó követelmények: A Windows AI képalkotó API-k használatához az alkalmazást MSIX-csomagként kell csomagolni, a systemAIModels képességet a Package.appxmanifest-ben deklarálva. Emellett győződjön meg arról, hogy a jegyzék attribútuma MaxVersionTested a Windows AI-funkciók megfelelő támogatásához egy újabb Windows-verzióra (például 10.0.26226.0 vagy újabbra) van állítva. A régebbi értékek használata "Alkalmazás által nem deklarált" hibákat okozhat a modell betöltésekor.
<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>
Tippek megadása
Az alábbiak bármelyik kombinációjával adhat tippeket:
- Azoknak a pontoknak a koordinátái, amelyeket azonosítani próbál.
- Olyan pontok koordinátái, amelyek nem tartoznak az ön által azonosított pontokhoz.
- Egy koordináta téglalap, amely magában foglalja az ön által azonosított elemet.
Minél több tippet ad meg, annál pontosabb lehet a modell. A pontatlan eredmények és hibák minimalizálása érdekében kövesse ezeket a tippeket.
- Ne használjon több téglalapot egy tippben, mert pontatlan maszkot hozhat létre.
- Ne használjon kizáró pontokat kizárólag anélkül, hogy beillesztési pontokat vagy téglalapot használna.
- Ne adjon meg többet, mint a támogatott legfeljebb 32 koordinátát (1 pont, téglalap esetén 2), mert ez hibát ad vissza.
A visszaadott maszk szürkeárnyalatos-8 formátumú, és az azonosított objektum maszkjának képpontjai 255-ös értékkel rendelkeznek (minden másnak 0 az értéke).
Példa képobjektum-kinyerőre
Az alábbi példák egy objektum képen belüli azonosításának módjait mutatják be. A példák feltételezik, hogy már rendelkezik szoftveres bitképobjektummal (softwareBitmap) a bemenethez.
A GetReadyState metódus meghívásával és a EnsureReadyAsync metódus sikeres visszatérésére várva győződjön meg arról, hogy a Képobjektum-kinyerő modell elérhető.
Miután elérhető a Képobjektum-kinyerő modell, hozzon létre egy ImageObjectExtractor objektumot, hogy hivatkozzon rá.
Adja át a képet a CreateWithSoftwareBitmapAsyncnek.
Hozzon létre egy ImageObjectExtractorHint objektumot. A különböző bemenetekkel rendelkező tippobjektumok létrehozásának egyéb módjait később bemutatjuk.
Küldje el a tippet a modellnek a GetSoftwareBitmapObjectMask metódussal, amely a végeredményt adja vissza.
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);
Tippek megadása belefoglalt és kizárt szempontokkal
Ez a kódrészlet bemutatja, hogyan használható mind a belefoglalt, mind a kizárt pontok tippként.
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}
}
);
Tippek megadása téglalappal
Ez a kódrészlet bemutatja, hogyan használható egy téglalap (a RectInt32 X, Y, Width, Height) tippként.
ImageObjectExtractorHint hint(
includeRects:
new List<RectInt32> {new RectInt32(370, 278, 285, 126)},
includePoints: null,
excludePoints: null );
ImageObjectExtractorHint hint(
{
RectInt32{370, 278, 285, 126}
},
{},
{}
);