次の方法で共有


画像前景抽出器

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>

ビットマップ イメージからマスクを生成する

  1. GetReadyState を呼び出し、EnsureReadyAsync が正常に完了するのを待って、ImageForegroundExtractor オブジェクトの準備ができていることを確認します。
  2. モデルの準備ができたら、 CreateAsync を 呼び出して ImageForegroundExtractor オブジェクトをインスタンス化します。
  3. 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);

こちらも参照ください