如何使用GPUImageMaskFilter与相机输入

时间:2014-06-08 14:12:40

标签: ios mask gpuimage gpuimagestillcamera

我正在使用BradLarson的GPUImage iOS框架。我正在尝试按照filtershowcase中的示例为我的实时相机输入添加一个蒙版。使用其他过滤器,这个简单的链可以工作,但是使用GPUImageMaskFilter则没有。我的输出只是一个白色的屏幕。有什么遗漏?

这是我的代码:

    stillCamera = [[GPUImageStillCamera alloc] init];
    stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;

    GPUImageView *filterView = [[GPUImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 427)];
    [self.view addSubview:filterView];

    maskFilter = [[GPUImageMaskFilter alloc] init];
    [(GPUImageFilter*)maskFilter setBackgroundColorRed:0.0 green:1.0 blue:0.0 alpha:1.0];
    UIImage *mask = [UIImage imageNamed:@"mask.png"];
    GPUImagePicture *maskImage = [[GPUImagePicture alloc] initWithImage:mask smoothlyScaleOutput:YES];
    [maskImage processImage];
    [maskImage addTarget:maskFilter];

    [stillCamera addTarget:maskFilter];
    [maskFilter addTarget:filterView];

    [stillCamera startCameraCapture];

我也尝试过使用GPUImageVideoCamera,但这没有帮助。我认为问题可能在于过滤器链或掩码过滤器的声明。

我查看了这个问题How to Implement GPUImageMaskFilter using GPUImage,但这是针对静态图片而非实时相机输入。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要先添加以下目标:

[stillCamera addTarget:maskFilter];
[maskImage addTarget:maskFilter];

然后处理图像:

[maskImage processImage];

然后您可以将过滤结果传递给视图:

[maskFilter addTarget:filterView];