2016-10-28 3 views
3

카메라 초점을 맞추기위한 명령을 보내고 자동 초점 기능을 끈 다음 사진을 찍고 싶습니다. 이것은 각 사진 사이에 집중하는 데 걸리는 시간을 피하기위한 것입니다. 이것이 가능한가? 나는 완전히 쓰여진 프로그램을 가지고 있지만 이것은 퍼즐의 마지막 부분이다.Canon EDSDK Focus

답변

1

다음은 내가 발견 한 것입니다.

Canon SDK에는 초점이 약간 문제가 있습니다.

MainCamera.SendCommand(CameraCommand.PressShutterButton,(int)ShutterButton.Completely); 
//Wait for some time here and if the photo wasn't taken, call: 
MainCamera.SendCommand(CameraCommand.PressShutterButton,(int)ShutterButton.Completely_NonAF); 
//Then, in either case, call 
MainCamera.SendCommand(CameraCommand.PressShutterButton,(int)ShutterButton.OFF); 

아니면이 같은 것을 할 필요가 라이브 뷰 사용하는 경우 :

MainCamera.SendCommand(CameraCommand.DoEvfAf, 1); 
//Wait for some time here 
MainCamera.SendCommand(CameraCommand.DoEvfAf, 0); 
MainCamera.SendCommand(CameraCommand.PressShutterButton,(int)ShutterButton.Completely_NonAF); 
MainCamera.SendCommand(CameraCommand.PressShutterButton,(int)ShutterButton.OFF); 

희망이 같은 사람을 도움이 은 그러나 귀하의 경우에 나는 간단한 일이 될 것이라고 생각 나는 이것을 길고 열심히 보았다.

2

실제로 포커스가 시작된 후 실제로 발생하는 것을 감지하는 더 정확한 방법이 있습니다. 첫째, 초점이 성공했는지 여부를 알 수 있으며 초점이 완료된 시점을 알 수 있으므로 너무 오래 기다릴 필요가 없습니다.

LiveView와 정상 모드에서 작동이 다릅니다. 내가 LiveView에서 그것을 테스트했지만 설명서는 정상 모드에서 몇 가지 차이점을 말합니다. 어쨌든,이 LV를위한 것입니다

를 사용하여 당신이했던 것처럼 첫 번째 명령 : 초점 포인트 중 일부에 초점이있는 경우

MainCamera.SendCommand(CameraCommand.DoEvfAf, kEdsCameraCommand_EvfAf_ON);

다음 주기적으로 감지 할 kEdsPropID_FocusInfo 속성을 확인합니다.

반환 된 초점 포인트가 justFocus이므로 문서에 따라 문서가 0이나 1이되어야하지만 내 카메라 (5D 마크 IV)에서는 문서가 틀립니다.

  • 16 = 알 수없는 포커스 상태 및 현재 성공적으로
  • 17
  • = 집중을 집중하고 (원샷 모드) 일시 정지 포커싱하지 :

    대신에, 나는 justFocus 적어도이 값을 가지고 있음을 발견했다. 그러나 초점은 여전히 ​​"On"모드이므로 아래 명령을 사용하여 초점을 "Off"로 변경해야합니다. 그렇지 않으면 확대와 같은 일부 작동이 작동하지 않습니다. = 초점

  • (18)는

내 전술이 반환 초점 포인트를 스캔 성공 또는 실패 초점을 검색하는 것입니다 (AF 서보 모드에서) 아직 진행 성공적으로 집중하고 초점 =

  • 20
  • 에 실패했습니다. 발견하는 경우, 그때 호출하여 초점 프로세스를 중지합니다 :

    MainCamera.SendCommand(CameraCommand.DoEvfAf, kEdsCameraCommand_EvfAf_OFF);

    +0

    안녕, 난 그냥 특성에 초점을 찾을 수 없습니다. PropertyID.FocusInfo를 가지고 있는데, 그 값을 찾을 수 없습니다. 도움이 깊게, 감사합니다 감사합니다 – smoothumut

    +0

    그것은 오랜 시간이 지났고 약간 것들을 커버 C#을위한 몇 가지 EDSDK 래퍼를 사용하고 있습니다. 그러나 FocusInfo 속성에 대한 데이터를 검색하는 경우 EdsFocusInfo 구조체를 가져와야하며이 구조체의 일부는 focusPoint 배열 (EdsFocusPoint 구조체)입니다. 각 포커스 포인트에는 자체의 justFocus 변수가 있습니다. –

    관련 문제