我正在尝试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
答案 0 :(得分:2)
我相信您的问题是您的应用程序已启用ARC,并且您没有保留对GPUImageVideoCamera实例的引用。这意味着只要-viewDidLoad完成,您的相机将被取消分配,您将停止从中获取帧。我很惊讶你甚至可以在取消分配相机之前获得一帧。
对于连续处理,您希望使您的相机(可能还有您的光度处理器)成为您班级中强烈引用的实例变量。您需要通过此方法保持活动状态,并且能够在前往后台时暂停它或根据需要终止捕获。