添加GPUImageFilter时,GPUImageView在过滤和未过滤视图之间闪烁

时间:2015-02-07 00:38:54

标签: ios filter camera avfoundation gpuimage

我尝试使用实时相机Feed(使用GPUImageViewGPUImageStillCamera)显示GPUImageVideoCamera并在其下方显示一系列过滤器。当点击过滤器时,我希望它将该过滤器应用于实时源,以便GPUImageView显示相机输入的实时过滤源。我已经完成了所有设置,但出于某种原因,当我点击几乎任何包含的GPUImageOutput过滤器(Vignette,Smooth Toon,Emboss等)时,视频源会像疯了一样闪烁。看起来它在过滤后的视图和未过滤的视图之间交替。当我切换到不同的滤波器时,我可以判断滤波器在切换到不同滤波器之前的一小段时间内正常工作。

灰度和棕褐色滤镜不会闪光,而只会显示半强度。我已经尝试为棕褐色滤镜设置强度为1.0(以及一堆其他值),但是灰度级没有任何设置可以改变,看起来有些东西是灰色的,但有&#39 ; s仍然是颜色。我尝试拍摄灰度视图的屏幕截图,但是当我查看屏幕截图时,图像要么被正确地灰度化,要么根本不灰度,即使它不是我在实际设备上看到的。我的理论是它在滤波视图和非滤波视图之间的切换非常快,因此产生了50%强度的灰度滤波器的错觉。

我不知道为什么会发生这种情况,因为标准的GPUImage示例项目工作正常,而且我的项目没有太大的不同。

如果有人能帮助我或者至少指出我正确的方向,我将非常感激。我一直试图连续3天调试这个问题,我根本想不出来。

编辑:当我在capturePhotoAsImageProcessedUpToFilter上致电GPUImageStillCamera时,它会为nil和完成版块中的UIImage返回NSError(甚至虽然GPUImageStillCamera不是零。不确定这是否相关,但我认为值得一提。

编辑2:我刚刚意识到它返回了一个零图像,因为没有设置过滤器。但如果是这样的话,如何在没有任何过滤器活动的情况下拍摄照片?这可能与我原来的问题有关吗?我设置了一个灰度过滤器(我仍然看到它的半强度版本),并且完成块中返回的图像是实际适当的灰度图像,尽管实时馈送看起来不同。

1 个答案:

答案 0 :(得分:0)

您可能有两个针对您的视图的输入。

如果不看代码就无法分辨,但我发现用所有输入/输出绘制图形确实有助于调试过滤器。