GPUImageAlphaBlendFilter从GPUImageStillCamera源实时处理
我正在使用GPUImage库,我试图实时混合两个图像,并将它们显示在GPUImageView
。 我正在尝试将纯相机input与其过滤版本进行alpha混合。 这是我想要做的:
----------------->----v --camera--| alpha blend ----> image view -----> color filter --^
我发现了一些关于使用混合filter的文章,但是他们似乎并不是实时处理的方法。 我发现https://github.com/BradLarson/GPUImage/issues/319,GPUImage :混合两个图像 ,和https://github.com/BradLarson/GPUImage/issues/751 (但他们不是实时处理,(第一和第二),或不工作(第三)。
我已经尝试了几乎所有的东西,但是我得到的只是GPUImageView中的一个白色图像。 如果我不使用阿尔法混合filter,比如只使用一个错误的颜色filter或类似的东西,它就可以完美的工作。 这是我的代码:
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];
然后在图像上显示错误的颜色filter。
阿尔法混合filter似乎有什么问题。 我读过一些我需要在input上调用processImage
的post,但据我所知,这些post都是非实时input的。 我怎样才能让GPUImageAlphaBlendFilter实时工作?
好的,通过互联网和项目的问题清单( https://github.com/BradLarson/GPUImage/issues )进一步调查问题,并find一个解决方法。 将混合滤镜设置为目标时,我需要专门指定纹理索引。 出于某种原因(可能是一个错误),添加目标混合filter两次不会正确添加第二个纹理在下一个索引。 因此,将纹理索引显式设置为0和1的确行得通:
[passThrough addTarget:blendFilter atTextureLocation:0]; [selectedFilter addTarget:blendFilter atTextureLocation:1];
对于作为单个源的目标的filter, [stillCamera addTarget:selectedFilter];
addTarget:
就足够了,但是[stillCamera addTarget:selectedFilter];
。
- 与GPUImageView混合没有给予预期的结果
- 与GPUImage混合:如何控制第一个图像上的第二个图像的位置
- 初始化The Amazing Audio Engine后,没有录像中的audio(使用GPUImage)
- 如何在iOS上用libtiff编写1bpp tiff?
- 如何减lessGPUImageGaussianSelectBlurFilter效果中的内存消耗?
- 如何使用GPUImageHarrisCornerDetectionFilter获得转angular
- 无法使用GPUImage编辑video
- 具有UIView透明度的GPUImagevideo
- 旋转GPUImageTiltShiftFilter – GPUImage