2016-10-28 32 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プロパティを確認してください。

私のカメラ(5D Mark IV)では、返されたフォーカスポイントがjustFocusなので、ドキュメンテーションによると0または1になるはずですが、そうではありません。

  • 16 =不明フォーカス状態と現在正常 =着目集束及び(ワンショットモードで)一時停止しているフォーカスない:

    その代わりに、私はjustFocus、少なくともこれらの値を有していることを見出しました。ただし、フォーカスはまだ「オン」モードであるため、以下のコマンドを使用してフォーカスを「オフ」に変更する必要があります。そうしないと、ズームなどの一部の操作は機能しません。

  • 18 =フォーカスが正常に焦点を合わせ、焦点=
  • 20を失敗は、(AFサーボモードで)進行中

マイ戦術で返さフォーカスポイントをスキャンし、成功または失敗した焦点を検索することです。見つかった場合、私はその後呼び出すことで合焦処理を停止します。

MainCamera.SendCommand(CameraCommand.DoEvfAf, kEdsCameraCommand_EvfAf_OFF);

+0

こんにちは、私はちょうど財産を集中見つけることができません。私はPropertyID.FocusInfoを持っています、私はその値のどれも見つけることができません。助けを深く感謝して、よろしく – smoothumut

+0

それは長い時間が、私は物事をカバーするC#のいくつかのEDSDKラッパーを使用しています。ただし、FocusInfoプロパティのデータを取得する場合は、その一部がfocusPoint配列(EdsFocusPoint構造体)であるEdsFocusInfo構造体を取得する必要があります。各フォーカスポイントには、独自のjustFocus変数があります。 –