IOS如何查看自动对焦是否还在进行?
How to check the auto focus is still going on in IOS?
我创建了相机应用程序,现在我想做的是需要检查对焦是连续进行还是停止。
这是我试过的:
NSError *error=nil;
//Capture Session
AVCaptureSession *session = [[AVCaptureSession alloc]init];
session.sessionPreset = AVCaptureSessionPresetPhoto;
//Add device
AVCaptureDevice *device =
[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
// SETUP FOCUS MODE
if ([device lockForConfiguration:nil]) {
[device setFocusMode:AVCaptureFocusModeAutoFocus];
[device unlockForConfiguration];
}
else{
NSLog(@"error while configuring focusMode");
}
NSLog(@"%@" ,NSStringFromCGPoint(device.focusPointOfInterest));
if ([device isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus] && [device lockForConfiguration:&error]){
[device setFocusMode:AVCaptureFocusModeContinuousAutoFocus];
if ([device isFocusPointOfInterestSupported])
[device setFocusPointOfInterest:CGPointMake(0.5f,0.5f)];
[device unlockForConfiguration];
}
else{
NSLog(@"problem ");
}
//Input
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
if (!input)
{
NSLog(@"No Input");
}
[session addInput:input];
//Preview Layer
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
UIView *myView = viewForCamera;
previewLayer.frame = myView.bounds;
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[viewForCamera.layer addSublayer:previewLayer];
//Start capture session
[session startRunning];
我搜索了有没有委托方法但是我没有得到,请帮助我解决这个问题。
我用 sample.I 谷歌搜索得到了 solution.I 试过并得到了很多答案。
We must set the point of interest before calling setFocusMode
在你的编码中你没有调用兴趣点
if ([device isFocusPointOfInterestSupported])
{
[device setFocusPointOfInterest:CGPointMake(0.5f,0.5f)];
[device setFocusMode:AVCaptureFocusModeAutoFocus];
//OR
[device setFocusMode:AVCaptureFocusModeContinuousAutoFocus];
[device unlockForConfiguration];
}
AutoFocus is not working
然后判断是否自动对焦
Auto Focus Observer
我创建了相机应用程序,现在我想做的是需要检查对焦是连续进行还是停止。
这是我试过的:
NSError *error=nil;
//Capture Session
AVCaptureSession *session = [[AVCaptureSession alloc]init];
session.sessionPreset = AVCaptureSessionPresetPhoto;
//Add device
AVCaptureDevice *device =
[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
// SETUP FOCUS MODE
if ([device lockForConfiguration:nil]) {
[device setFocusMode:AVCaptureFocusModeAutoFocus];
[device unlockForConfiguration];
}
else{
NSLog(@"error while configuring focusMode");
}
NSLog(@"%@" ,NSStringFromCGPoint(device.focusPointOfInterest));
if ([device isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus] && [device lockForConfiguration:&error]){
[device setFocusMode:AVCaptureFocusModeContinuousAutoFocus];
if ([device isFocusPointOfInterestSupported])
[device setFocusPointOfInterest:CGPointMake(0.5f,0.5f)];
[device unlockForConfiguration];
}
else{
NSLog(@"problem ");
}
//Input
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
if (!input)
{
NSLog(@"No Input");
}
[session addInput:input];
//Preview Layer
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
UIView *myView = viewForCamera;
previewLayer.frame = myView.bounds;
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[viewForCamera.layer addSublayer:previewLayer];
//Start capture session
[session startRunning];
我搜索了有没有委托方法但是我没有得到,请帮助我解决这个问题。
我用 sample.I 谷歌搜索得到了 solution.I 试过并得到了很多答案。
We must set the point of interest before calling setFocusMode
在你的编码中你没有调用兴趣点
if ([device isFocusPointOfInterestSupported])
{
[device setFocusPointOfInterest:CGPointMake(0.5f,0.5f)];
[device setFocusMode:AVCaptureFocusModeAutoFocus];
//OR
[device setFocusMode:AVCaptureFocusModeContinuousAutoFocus];
[device unlockForConfiguration];
}
AutoFocus is not working
然后判断是否自动对焦
Auto Focus Observer