私は GPUImage ライブラリを使用しており、2 つの画像をリアルタイムでブレンドして、GPUImageView
. プレーンなカメラ入力を、フィルター処理されたバージョンとアルファ ブレンドしようとしています。これが私がやろうとしていることです:
----------------->----v
--camera--| alpha blend ----> image view
-----> color filter --^
ブレンド フィルターの使用に関する投稿をいくつか見つけましたが、それらはリアルタイム処理の方法ではないようです。https://github.com/BradLarson/GPUImage/issues/319、 GPUImage: blending two images、およびhttps://github.com/BradLarson/GPUImage/issues/751を見つけました (ただし、どちらもリアルタイム処理 (1 番目と 2 番目)、または機能しない (3 番目)。
ほとんどすべてを試しましたが、取得できるのは GPUImageView の白い画像だけです。アルファ ブレンド フィルターを使用しない場合、たとえば、フォルス カラー フィルターなどを使用するだけで、完全に機能します。これが私のコードです:
blendFilter = [[GPUImageAlphaBlendFilter alloc] init];
blendFilter.mix = 0.5;
[blendFilter prepareForImageCapture];
[blendFilter addTarget:imageView];
passThrough = [[GPUImageFilter alloc] init];
[passThrough prepareForImageCapture];
[passThrough addTarget:blendFilter];
selectedFilter = [[GPUImageFalseColorFilter alloc] init];
[selectedFilter prepareForImageCapture];
[selectedFilter addTarget:blendFilter];
stillCamera = [[GPUImageStillCamera alloc] init];
stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
[stillCamera addTarget:passThrough];
[stillCamera addTarget:selectedFilter];
[stillCamera startCameraCapture];
私が得ているのは、白い空白の画面だけです。に変更[selectedFilter addTarget:blendFilter];
すると[selectedFilter addTarget:imageView];
、画像に偽色フィルターが表示されます。
アルファ ブレンド フィルターに問題があるようです。入力で呼び出す必要があるいくつかの投稿でそれを読みましたがprocessImage
、私が理解している限り、それらの投稿はすべて非リアルタイム入力用です。GPUImageAlphaBlendFilter をリアルタイムで動作させるにはどうすればよいですか?