2014-11-24 8 views
2

언급 된 요점을 변경하여 포커스를 변경하려고합니다.iPhone6 ​​및 iPhone6 ​​+에서만 포커스 포인트 정보가 변경된 경우에도 포커스가 변경되지 않습니다.

기능은 항상 YES를 반환하고 내가 관심있는 새로운 포커스 포인트를 읽어 게터를 사용하는 경우, 그것은하지만 isFocusAdjusting =이 참고 NO

가 변경

:

focusMode: AVCaptureFocusModeContinuousAutoFocus 

newFocusPointOfInterest: Normalized CGPoint 

초점이 보인다 (0.5f, 0.5f) 또는 기본적으로 자동 초점으로 잠글 수 있습니다.

이 코드는 iPhone 6 및 iPhone 6+을 제외한 모든 장치에서 작동합니다. 내가 잘못하고 있는게 있나요? API 호출이 변경 되었습니까? 를 눌러 초점을 맞 춥니 다 작품 - ** 내가 애플 AVCam 및 AVCamManual 에서 제공하는 샘플 애플리케이션을 검사 한

: 추가 관찰 :

- (BOOL)changeDeviceFocusPointOfInterest:(CGPoint)newFocusPointOfInterest 
 
           focusMode:(AVCaptureFocusMode)focusMode 
 
{ 
 
    NSError *error; 
 
    BOOL ret = NO; 
 
    
 
    if([device lockForConfiguration:&error]) 
 
    { 
 
     if ([device isFocusModeSupported:focusMode] && [device isFocusPointOfInterestSupported]) 
 
     { 
 
      [device setFocusPointOfInterest:newFocusPointOfInterest]; 
 
      [device setFocusMode:focusMode]; 
 
      
 
      ret = YES; 
 
     } 
 
     else 
 
     { 
 
      NSLog(@"focus point setting not supported:{%f,%f}", newFocusPointOfInterest.x, newFocusPointOfInterest.y); 
 
      ret = NO; 
 
     } 
 
     [device unlockForConfiguration]; 
 
    } 
 
    else 
 
    { 
 
     NSLog(@"cant lock hardware settings for changing focus point:{%f,%f}", newFocusPointOfInterest.x, newFocusPointOfInterest.y); 
 
     ret = NO; 
 
    } 
 
    return ret; 
 
}

** 편집을 도와주세요 AVCam에 있지만 AVCamManual에 없음 동일한 장치 설명서 C와 관련된 코드를 제거하려고했습니다. 샘플 작업 공간에서 ontrol을 실행했지만 결과가 나오지 않았습니다.

  • 키 값 관측 내가이 문제에 대한 하나의 포럼 게시물을 발견했지만 제시 한 해결 방안 것도 https://devforums.apple.com/message/1073042#1073042

  • 을 제대로 작동하지

  • NO lensPosition의 변화 또는 focusAdjusting 속성이 없다는 것을 보여

  • 필자는 사용자 지정 값에 포커스를 설정하고 극한을 설정 한 다음 필요한 focusPointOfInterest가있는 모드를 ContinousAuto로 설정하려고했습니다. 이로 인해 초점 변경이 발생하지만 필요한 관심 지점에 초점을 맞추지 못합니다.

답변

1

이것은 해결책이 될만큼 많은 대답이 아닙니다.

관찰에서 AVCaptureFocusModeAutoFocus 모드에있을 때 포커스는 스캔을 트리거하고 필요한 관심 지점에 초점을 맞춘 다음 포커스 (AVCaptureFocusModeLocked)를 잠급니다.

관심 지점을 변경하지 않고 모드를 AVCaptureFocusModeContinuousAutoFocus로 변경하면 카메라가 전체 프레임 초점을 수행하므로 관심 대상 지점이 쓸모 없게됩니다.

연속 자동 초점 동작을 모방하려면 AVCaptureDeviceSubjectAreaDidChangeNotification을 사용하여 포커스 모드를 AVCaptureFocusModeAutoFocus로 변경하여 수동으로 모니터링합니다.

그러나 AVCaptureFocusModeContinuousAutoFocus만큼 빠르지는 않으며 연속적인 알림 사이에 약 2-3 초의 시간 차이가 있습니다.

누군가 더 좋은 해결책을 찾은 경우 여기에서 공유하십시오.

참고 : Apple의 기본 카메라도 유사한 방식으로 작동합니다. 차이점은 카메라가 iPhone의 기본 카메라 앱에서 움직일 때 포커스가 관심있는 초점 포인트로 (0.5, 0.5) 인 AVCaptureFocusModeContinuousAutoFocus로 설정된다는 것입니다.

+1

버그가 iOS 8.3 이상에서 일부 테스트 실행시 깨졌습니다. :) –