Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí extraktoru objektu obrázku můžete identifikovat konkrétní objekty na obrázku. Model zpracuje jak obrázek, tak i objekt "nápovědy" a vrátí masku identifikovaného objektu.
Podrobnosti o rozhraní API najdete v tématu Referenční informace k rozhraní API pro funkce vytváření obrázků AI.
Podrobnosti o moderování obsahu najdete v tématu Zabezpečení obsahu pomocí rozhraní API pro generování AI.
Důležité
Požadavky manifestu balíčku: Aby bylo možné používat rozhraní API Windows AI pro zpracování obrazu, musí být vaše aplikace zabalená jako balíček MSIX s deklarovanou systemAIModels možností ve vašem Package.appxmanifest manifestu. Kromě toho se ujistěte, že je atribut manifestu MaxVersionTested nastavený na nejnovější verzi Windows (např 10.0.26226.0 . nebo novější), aby správně podporoval funkce AI systému Windows. Použití starších hodnot může při načítání modelu způsobit chyby "Není deklarováno aplikací".
<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>
Poskytování tipů
Nápovědu můžete poskytnout libovolnou kombinací následujících možností:
- Souřadnice bodů, které patří k tomu, co identifikujete.
- Souřadnice bodů, které nepatří do toho, co identifikujete.
- Souřadnicový obdélník, který zahrnuje to, co identifikujete.
Čím více tipů zadáte, tím přesnější může být model. Pokud chcete minimalizovat nepřesné výsledky nebo chyby, postupujte podle těchto pokynů.
- Vyhněte se použití více obdélníků v nápovědě, protože mohou vytvořit nepřesnou masku.
- Vyhněte se použití vyloučení bodů výhradně bez zahrnutí bodů nebo obdélníku.
- Nezadávejte více než podporované maximum 32 souřadnic (1 pro bod, 2 pro obdélník), protože to vrátí chybu.
Vrácená maska je v osmibitové stupnici šedi, kde pixely masky pro identifikovaný objekt mají hodnotu 255 (všechny ostatní mají hodnotu 0).
Příklad extraktoru objektů obrázku
Následující příklady ukazují způsoby identifikace objektu v obrázku. V příkladech se předpokládá, že pro vstup již máte objekt rastrového obrázku softwaru (softwareBitmap).
Ujistěte se, že je model extraktoru objektu obrázku k dispozici zavoláním metody GetReadyState a vyčkejte na úspěšný návrat metody EnsureReadyAsync.
Jakmile je k dispozici model Image Object Extractor, vytvořte objekt ImageObjectExtractor, který na něj bude odkazovat.
Předejte obrázek CreateWithSoftwareBitmapAsync.
Vytvoření ImageObjectExtractorHint objektu. Další způsoby vytvoření objektu nápovědy s různými vstupy jsou demonstrována později.
Pomocí metody GetSoftwareBitmapObjectMask odešlete nápovědu k modelu, který vrátí konečný výsledek.
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);
Určete nápovědy se zahrnutými a vyloučenými body
Tento fragment kódu ukazuje, jak jako nápovědu použít zahrnuté i vyloučené body.
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}
}
);
Zadejte nápovědy obdélníkem
Tento fragment kódu ukazuje, jak jako nápovědu použít obdélník (RectInt32 je X, Y, Width, Height).
ImageObjectExtractorHint hint(
includeRects:
new List<RectInt32> {new RectInt32(370, 278, 285, 126)},
includePoints: null,
excludePoints: null );
ImageObjectExtractorHint hint(
{
RectInt32{370, 278, 285, 126}
},
{},
{}
);