如何在GPUImageGaussianBlurFilter上为GPUImageVideoCamera应用GPUImageMaskFilter

时间:2014-10-01 18:58:25

标签: ios objective-c gpuimage

我正在尝试将GPUImageGaussianBlurFilter应用于使用PNG图像的实时相机Feed屏蔽。另外我需要提一下,PNG图像不是正方形或圆形,而是封闭的Bezier路径。

这是我的代码:

GPUImageVideoCamera *videoCamera;
GPUImageView *view1;

videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeRight;
CGRect movieFrame = CGRectMake(0.0, 0.0, 640.0, 480.0);

view1 = [[GPUImageView alloc] initWithFrame:movieFrame];
[self.view addSubview:view1];

GPUImageMaskFilter * maskFilter = [[GPUImageMaskFilter alloc] init];

[videoCamera addTarget:maskFilter];

GPUImageGaussianBlurFilter * gaussianBlurFilter = [[GPUImageGaussianBlurFilter alloc] init];
[gaussianBlurFilter setBlurRadiusInPixels:3.0];
[gaussianBlurFilter addTarget:maskFilter];

GPUImagePicture * maskGPUImage = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"mask2"] smoothlyScaleOutput:YES];
[maskGPUImage addTarget:maskFilter];
[maskGPUImage processImage];

[maskFilter addTarget:view1];

[videoCamera startCameraCapture];

但Xcode 6.0.1在“GPUImageFramebuffer.m”中编译后在执行中断执行:

NSAssert(framebufferReferenceCount > 0, @"Tried to overrelease a framebuffer, did you forget to call -useNextFrameForImageCapture before using -imageFromCurrentFramebuffer?");

使用OSX Mavericks 10.9.5,iPad Air进行测试

此致

1 个答案:

答案 0 :(得分:1)

我找到了解决方案;引用应该是强大的。弱引用早期发布