我想发送一个命令来聚焦相机,然后关闭自动对焦功能,然后拍照。这是为了避免在每一张照片之间聚焦所需的时间。这个是可能的吗?我有一个完整的程序,但这是最后一块拼图。
发布于 2016-11-11 20:58:34
这是我发现的。
对于佳能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);希望这对某人有帮助,因为我一直在努力寻找这件事。
发布于 2017-02-19 21:33:41
在焦点开始后,有一种更精确的方法来检测实际发生的事情。首先,您可以判断焦点是否成功,也可以判断焦点何时完成,因此您不需要等待太久。
这种操作在LiveView和正常模式下是不同的。我已经在LiveView中测试过它,但是文档在正常模式下说明了一些不同之处。总之,这是给LV的:
如您所做的那样使用第一个命令:
MainCamera.SendCommand(CameraCommand.DoEvfAf, kEdsCameraCommand_EvfAf_ON);
然后定期检查kEdsPropID_FocusInfo属性,以检测某些焦点是否在焦点中。
文档在我的相机(5D Mark )中是完全不正确的,因为返回的焦点有一个justFocus值,根据文档,这个值应该是0或1,但它不是!
相反,我发现justFocus至少具有以下值:
我的策略是扫描返回的焦点,并寻找成功或失败的焦点。如果找到,我将停止聚焦过程,调用:
MainCamera.SendCommand(CameraCommand.DoEvfAf, kEdsCameraCommand_EvfAf_OFF);
https://stackoverflow.com/questions/40312952
复制相似问题