GPUImage フレームワークのクロマキー フィルターを使用しようとしています。私は Filtershowcase の例に従いましたが、ビデオのみが表示され、グリーンスクリーンのキーアウト効果がないため、明らかに何かが欠けています。ビデオカメラ/フィルターの初期化は次のとおりです。
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];
したがって、camera と sourcePicture はどちらもフィルタにフィードされ、filter は viewCamera に渡されます。しかし、今は普通のビデオしか見られず、クロマキー効果はありません。(しきい値を変更するスライダーがあります)。
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];
このフィルターを使用すると、実際の画像ではなく、単純に黒に置き換えられました。