如何同时使用ChromaKey和Sepia滤镜与GPUImage?

时间:2014-08-12 10:10:52

标签: ios objective-c gpuimage

我第一次使用Brad Larson的GPUImage框架。

我不知道是否可能,但我想使用 GPUImageChromaKeyFilter GPUImageSepiaFilter 。我可以单独使用它们,但同时它不起作用。 棕褐色调有效,但chromaKey似乎不起作用。

编辑2:工作 这是我的代码:

- (void)setupCameraAndFilters:(AVCaptureDevicePosition)cameraPostion {

    videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:cameraPostion];
    videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeRight;

    // ChromaKey
    chromaKeyFilter = [[GPUImageChromaKeyBlendFilter alloc] init];
    [(GPUImageChromaKeyBlendFilter *)chromaKeyFilter setColorToReplaceRed:0.0 green:1.0 blue:0.0];

    [videoCamera addTarget:chromaKeyFilter];

    // Input image (replace the green background)
    UIImage *inputImage;
    inputImage = [UIImage imageNamed:@"chromaBackground.jpg"];
    sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES];
    [sourcePicture processImage];
    [sourcePicture addTarget:chromaKeyFilter];

    // Sepia filter
    sepiaFilter = [[GPUImageSepiaFilter alloc] init];
    [chromaKeyFilter addTarget:sepiaFilter];

    [sepiaFilter addTarget:self.filteredVideoView];

    [videoCamera startCameraCapture];
}

2 个答案:

答案 0 :(得分:2)

您的问题是上述代码并没有多大意义。在第一个示例中,您将静止图像放入单输入GPUImageChromaKeyFilter,然后尝试将源图像和视频源都定位到单输入GPUImageSepiaFilter。其中一个输入将被另一个输入覆盖。

GPUImageFilterGroups只是用于将过滤器序列分组在一起的便捷类,是一个易于重用的软件包,并且不会在这里解决任何问题。

如果您尝试将视频与色度键合图像混合,则需要使用GPUImageChromaKeyBlendFilter,它需要两个输入并根据键控将它们混合在一起。然后,您可以将单个输出图像发送到棕褐色调滤波器,或者您想要对其进行排序。

答案 1 :(得分:0)

您必须使用GPUImageFilterGroup过滤器才能完成您想要的任务。在GPUImage的示例中,您可以找到如何实现此目的。祝你好运!