1

Nokia Imaging SDK を使用して、ChromaKeyFilter を使用した画像を背景画像にブレンドしようとしています。これも同じレンダリングプロセスで行いたいと思います。

これまでのところ、私はこれを持っています:

IList<IFilter> finalFilters = new List<IFilter>();
finalFilters.Add(_chromaKeyFilter);
finalFilters.Add(blendFilter);

ただし、現在は背景画像が一番上にあり、もちろん逆になっているはずです。これをどうにか切り替えることはできますか?それとも、これは正しい方法ですか?ありがとう。

4

1 に答える 1

2

通常、背景画像 (1 つの *ImageSource を使用して設定) と前景画像 (別の *ImageSource を使用して設定) があります。

ChromaKeyFilter (FilterEffect 内) は、画像に透明度を作成するモディファイアと見なすことができます。ここではフォアグラウンドに適用されます。これは基本的に、設定がピクセルに一致する場所ならどこでも透明な穴 (ゼロ アルファ) を切り取ります。

次に、BlendFilter (別のFilterEffect 内) が背景に適用され、前景の FilterEffect をその ForegroundSource として取得して、前景の画像をその上に配置します。

擬似コードを使用して例を試みます:

// Foreground chain:
var fg = new BufferImageSource(...);
var fgWithTransparency = new FilterEffect(fg) 
{ 
    Filters = new [] { new ChromaKeyFilter(...) }
};

// Background/compositing chain:
var bg = new BufferImageSource(...);
var bgAndFgComposited = new FilterEffect(bg) 
{ 
    Filters = new [] { new BlendFilter(fgWithTransparency) }
};

ここで bgFilterEffect をレンダリングすると、fg が上にブレンドされた bg を示す合成結果が得られます。

于 2013-12-14T21:31:58.827 に答える