ImageForegroundExtractor を使用すると、入力画像の前景をセグメント化し、背景の削除やステッカーの生成などの機能を有効にすることができます。
返されるマスクはグレースケール 8 形式です。 ピクセル値の範囲は 0 から 255 で、0 は背景ピクセルを表し、255 は前景ピクセルを表し、中間値は前景ピクセルと背景ピクセルのブレンドを示します。
API の詳細については、AI イメージング機能の API リファレンスを参照してください。
コンテンツ モデレーションの詳細については、「生成 AI API を使用したコンテンツの安全性」を参照してください。
Important
パッケージ マニフェストの要件: Windows AI イメージング API を使用するには、systemAIModelsで宣言されたPackage.appxmanifest機能を備えた MSIX パッケージとしてアプリをパッケージ化する必要があります。 さらに、マニフェストの MaxVersionTested 属性が最新の Windows バージョン ( 10.0.26226.0 以降など) に設定されていることを確認して、Windows AI 機能を適切にサポートします。 古い値を使用すると、モデルの読み込み時に "アプリによって宣言されていません" エラーが発生する可能性があります。
<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>
ビットマップ イメージからマスクを生成する
- GetReadyState を呼び出し、EnsureReadyAsync が正常に完了するのを待って、ImageForegroundExtractor オブジェクトの準備ができていることを確認します。
- モデルの準備ができたら、 CreateAsync を 呼び出して ImageForegroundExtractor オブジェクトをインスタンス化します。
- GetMaskFromSoftwareBitmap を入力イメージと共に呼び出して、フォアグラウンド マスクを生成します。
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);