首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >佳能EDSDK焦点

佳能EDSDK焦点
EN

Stack Overflow用户
提问于 2016-10-28 20:43:15
回答 2查看 1.9K关注 0票数 3

我想发送一个命令来聚焦相机,然后关闭自动对焦功能,然后拍照。这是为了避免在每一张照片之间聚焦所需的时间。这个是可能的吗?我有一个完整的程序,但这是最后一块拼图。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-11 20:58:34

这是我发现的。

对于佳能SDK来说,聚焦有点问题。但就你的情况而言,我认为最简单的事情是:

代码语言:javascript
复制
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);

或者,如果您使用的是实时视图,您必须这样做:

代码语言:javascript
复制
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);

希望这对某人有帮助,因为我一直在努力寻找这件事。

票数 1
EN

Stack Overflow用户

发布于 2017-02-19 21:33:41

在焦点开始后,有一种更精确的方法来检测实际发生的事情。首先,您可以判断焦点是否成功,也可以判断焦点何时完成,因此您不需要等待太久。

这种操作在LiveView和正常模式下是不同的。我已经在LiveView中测试过它,但是文档在正常模式下说明了一些不同之处。总之,这是给LV的:

如您所做的那样使用第一个命令:

MainCamera.SendCommand(CameraCommand.DoEvfAf, kEdsCameraCommand_EvfAf_ON);

然后定期检查kEdsPropID_FocusInfo属性,以检测某些焦点是否在焦点中。

文档在我的相机(5D Mark )中是完全不正确的,因为返回的焦点有一个justFocus值,根据文档,这个值应该是0或1,但它不是!

相反,我发现justFocus至少具有以下值:

  • 16 =未知焦点状态和当前不聚焦
  • 17 =成功地聚焦和聚焦暂停(在一个镜头模式)。但是,聚焦仍然处于"On“模式,因此必须使用下面的命令将其更改为"Off”,否则某些操作(如缩放)将无法工作。
  • 18 =焦点失败
  • 20 =成功地聚焦,聚焦仍在进行中(在AF伺服模式下)

我的策略是扫描返回的焦点,并寻找成功或失败的焦点。如果找到,我将停止聚焦过程,调用:

MainCamera.SendCommand(CameraCommand.DoEvfAf, kEdsCameraCommand_EvfAf_OFF);

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40312952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档