0

誰もが話しているように見えるこの GPUImage フレームワークを手に入れました..

とにかく、私はフィルター チェーンを実行しようとしています。最初の 2 つのフィルターをチェーンすると期待どおりの結果が得られますが、3 番目のフィルターを追加すると、画像全体が 0 アルファに設定されます。

私のコード:

-(UIImage*)doFilter:(int)aVal{

GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:self];
GPUImageLuminanceThresholdFilter *lumFilterOne = [[GPUImageLuminanceThresholdFilter alloc] init];
lumFilterOne.threshold = (float)aVal/255;

GPUImageFalseColorFilter *colorAFilter = [[GPUImageFalseColorFilter alloc] init];
colorAFilter.firstColor = (GPUVector4){0.5f, 0.5f, 0.5f, 1.0f};
colorAFilter.secondColor = (GPUVector4){1.0f, 1.0f, 1.0f, 1.0f};

GPUImageChromaKeyFilter *chromaFilter = [[GPUImageChromaKeyFilter alloc] init];
[chromaFilter setColorToReplaceRed:1.0f green:1.0f blue:1.0f];
chromaFilter.thresholdSensitivity = 0.0f;


[stillImageSource addTarget:lumFilterOne];
[stillImageSource processImage];

[lumFilterOne addTarget:colorAFilter];
[stillImageSource processImage];

[colorAFilter addTarget:chromaFilter];
[stillImageSource processImage];




return [chromaFilter imageFromCurrentlyProcessedOutput];
}

上で言ったように、これを交換すると

[colorAFilter addTarget:chromaFilter];
[stillImageSource processImage];




return [chromaFilter imageFromCurrentlyProcessedOutput];

これで(クロマキーフィルターを外して)

return [colorAFilter imageFromCurrentlyProcessedOutput];

期待どおりの結果が得られます。入力画像は選択したしきい値にしきい値処理され、結果の黒い領域は灰色に変わり、白は白のままです。

ChromaKey フィルターを導入するとすぐに、イメージ全体がキーアウトされます。

ホワイトアウトのみをキーにすることを期待しています。

どんな助けでも大歓迎です

4

1 に答える 1

0

私はこれを理解したことがありませんでしたが、必要なすべてを実行する独自のシェーダーを作成しただけなので、自分の質問に答えています。乾杯。

于 2012-09-28T20:15:17.030 に答える