我想使用GPUImage框架的色度键过滤器。我遵循了Filtershowcase示例,但显然我错过了某些内容,因为它只显示视频,但没有绿屏输出效果。这里是我的摄像机/过滤器的初始化:GPUImage色度键过滤器
camera = [[GPUImageStillCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480
cameraPosition:AVCaptureDevicePositionBack];
camera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft;
camera.horizontallyMirrorFrontFacingCamera = NO;
camera.horizontallyMirrorRearFacingCamera = NO;
chromaKeyFilter = [[GPUImageChromaKeyFilter alloc] init];
chromaKeyFilter.thresholdSensitivity = sliderThres.value;
UIImage *inputImage = [UIImage imageNamed:@"WID-small.jpg"];
GPUImagePicture *sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage
smoothlyScaleOutput:YES];
[camera addTarget:chromaKeyFilter];
[sourcePicture addTarget:chromaKeyFilter];
[sourcePicture processImage];
[chromaKeyFilter addTarget:viewCamera];
[camera startCameraCapture];
所以相机和sourcePicture都送入过滤器,过滤器比进入大画幅相机。但现在,我只能看到简单的视频,没有色度键效果。 (我有一个滑块来改变阈值)。
修订与GPUImageChromaKeyBlendFilter
camera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
camera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft;
chromaKeyFilter = [[GPUImageChromaKeyBlendFilter alloc] init];
UIImage *inputImage;
inputImage = [UIImage imageNamed:@"WID-small.jpg"];
GPUImagePicture *sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES];
[camera addTarget:chromaKeyFilter];
[sourcePicture processImage];
[sourcePicture addTarget:chromaKeyFilter];
[chromaKeyFilter addTarget:viewCamera];
[camera startCameraCapture];
有了这个过滤器,它只是采用黑色,而不是实际的图像取代它。
是的,但设置的阈值没有任何关系,无论如何,即使我没有作为默认值是0.4 – 0xSina