1

我正在尝试 GPUImage 框架,它看起来很棒,但是我不知道如何从相机视图中获得连续的反馈

基本上,我希望能够在相机视图发生变化时注销它所看到的亮度,例如,如果相机仍在明亮的房间中并且有人把手放在镜头上,那么 nslog 会逐渐熄灭值列表

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

- (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

4

1 回答 1

2

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

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

于 2013-07-29T19:30:59.830 回答