我第一次使用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];
}
答案 0 :(得分:2)
您的问题是上述代码并没有多大意义。在第一个示例中,您将静止图像放入单输入GPUImageChromaKeyFilter,然后尝试将源图像和视频源都定位到单输入GPUImageSepiaFilter。其中一个输入将被另一个输入覆盖。
GPUImageFilterGroups只是用于将过滤器序列分组在一起的便捷类,是一个易于重用的软件包,并且不会在这里解决任何问题。
如果您尝试将视频与色度键合图像混合,则需要使用GPUImageChromaKeyBlendFilter,它需要两个输入并根据键控将它们混合在一起。然后,您可以将单个输出图像发送到棕褐色调滤波器,或者您想要对其进行排序。
答案 1 :(得分:0)
您必须使用GPUImageFilterGroup
过滤器才能完成您想要的任务。在GPUImage
的示例中,您可以找到如何实现此目的。祝你好运!