誰もが話しているように見えるこの 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 フィルターを導入するとすぐに、イメージ全体がキーアウトされます。
ホワイトアウトのみをキーにすることを期待しています。
どんな助けでも大歓迎です