Я использую кран для фокусировки и смущен тем, как использовать разные AVCaptureFocusModes
. Делать это:Нажмите, чтобы сфокусироваться, сохраняя непрерывную автофокусировку.
[device setFocusPointOfInterest:focusPoint];
[device setFocusMode:AVCaptureFocusModeAutoFocus];
результаты успешной фокусировки, но так как я запирая фокусное расстояние, перемещая камеру будет терять фокус навсегда. Вместо этого, если я это сделать:
[device setFocusPointOfInterest:focusPoint];
[device setFocusMode:AVCaptureFocusModeContinousAutoFocus];
автофокусировка двигатель, кажется, освобождает свою точку интереса и просто сосредоточиться на том, что кажется, лучше. Приложение камеры успешно фокусируется на вашей точке интереса, одновременно сохраняя непрерывную автофокусировку при перемещении камеры, как это делается?
Это мой полный код, как сейчас:
- (void)setFocusPointOfInterest:(CGPoint)point
{
Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
if (captureDeviceClass != nil) {
AVCaptureDevice *device = [captureDeviceClass defaultDeviceWithMediaType:AVMediaTypeVideo];
if([device isFocusPointOfInterestSupported] &&
[device isFocusModeSupported:AVCaptureFocusModeAutoFocus]) {
CGRect screenRect = [[UIScreen mainScreen] bounds];
double screenWidth = screenRect.size.width;
double screenHeight = screenRect.size.height;
double focus_x = point.x/screenWidth;
double focus_y = point.y/screenHeight;
CGPoint focusPoint = CGPointMake(focus_x,focus_y);
if([device lockForConfiguration:nil]) {
[device setFocusPointOfInterest:focusPoint];
[device setFocusMode:AVCaptureFocusModeAutoFocus];
[device setExposurePointOfInterest:focusPoint];
if ([device isExposureModeSupported:AVCaptureExposureModeAutoExpose]){
[device setExposureMode:AVCaptureExposureModeAutoExpose];
}
[device unlockForConfiguration];
}
}
}
}
Что делать, если вас установить его на непрерывную автофокусировку и оставить его там? Нужно ли постоянно меняться между нормальной и непрерывной АФ? –
@ VaddadiKartick тогда, когда вы нажмете фокус, изменится – Bluewings
Извините, я не понял. –