相机实时GPUImage光度

时间:2013-07-28 21:33:12

标签: objective-c gpuimage

我正在尝试GPUImage框架,它看起来很棒,但我无法理解如何从摄像机视图中连续反馈

基本上我希望能够记录相机视图在变化时所看到的光度,例如,如果相机仍然在一个明亮的房间,有人将手放在镜头上逐渐向下会发出一个值列表

我能够读出光度的负载,但是我需要这个是恒定而不是一次性,这主要归结于我对框架缺乏了解,但是如果有人的话,它会很酷有任何指针

- (void)viewDidLoad
{
[super viewDidLoad];

GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;



GPUImageLuminosity*lumin = [[GPUImageLuminosity alloc] init];
[videoCamera addTarget:lumin];



[(GPUImageLuminosity *)lumin setLuminosityProcessingFinishedBlock:^(CGFloat luminosity, CMTime frameTime) {
    // Do something with the luminosity here

    NSLog(@"Lumin is %f ", luminosity);
}];

 [videoCamera startCameraCapture];


}

NSlog输出是 2013-07-28 22:30:42.419照片[1750:1603] Lumin是0.189748 2013-07-28 22:30:42.476照片[1750:1603] Lumin是0.230812

1 个答案:

答案 0 :(得分:2)

我相信您的问题是您的应用程序已启用ARC,并且您没有保留对GPUImageVideoCamera实例的引用。这意味着只要-viewDidLoad完成,您的相机将被取消分配,您将停止从中获取帧。我很惊讶你甚至可以在取消分配相机之前获得一帧。

对于连续处理,您希望使您的相机(可能还有您的光度处理器)成为您班级中强烈引用的实例变量。您需要通过此方法保持活动状态,并且能够在前往后台时暂停它或根据需要终止捕获。