【问题标题】:Canon EDSDK: Taking photo in LiveView breaks up the LV forever佳能 EDSDK:在 LiveView 中拍照永远破坏 LV
【发布时间】:2017-02-25 02:24:14
【问题描述】:

我的应用程序使用 C# 和相当轻量级的 EDSDKWraper(我已经修改了一点)来控制相机。我基本上已经可以控制一切,例如 LiveView、对焦(自动 + 手动)、设置和读取各种属性和拍摄图片,可选择使用自动对焦包围/堆叠。

但是,有一个问题:当我启动 LiveView 然后使用标准方式拍照时

SendCommand(Camera.Handle, PressShutterButton, ShutterButton_Completely_NonAF);
SendCommand(Camera.Handle, PressShutterButton, ShutterButton_OFF);

它有效,我可以使用Download + DownloadCompleteDownloadCancel 函数下载图片或取消下载。不幸的是,此后无法再获取 LiveView 图像,DownloadEvfImage 返回 OBJECT_NOT_READY 并使其永远返回。

唯一的出路是停止并再次启动 LiveView 或使用 DoEvfAF 命令启动 LiveView 自动对焦。但我想避免这种情况。

这发生在佳能 5D Mark IV 和 5D Mark III 上,同样的问题也发生在完全不同的 C# 框架上,我刚刚从网上下载了一个不同的示例。 EOS Utility 似乎工作正常,所以似乎有某种方法。

无论是 C# 还是 C++,“LiveView + 拍照 + LiveView 再次”能否在您的应用中工作?我需要执行一些技巧吗?

我已经花了很多时间试图找出错误,例如未发布的数据,并在网络上搜索答案,但到目前为止没有运气。

【问题讨论】:

    标签: edsdk canon-sdk


    【解决方案1】:

    终于发现是怎么回事了!因此,为了让其他人知道,问题是相机在其 LCD 上拍摄后显示照片(即普通审查)。在此显示期间,LiveView 不起作用! EOS 实用程序没有将图像保存在相机卡上,因此没有什么可查看的,LV 继续不间断。

    无论如何,解决方案/解决方法是摆脱 LCD 上的审查图像。到目前为止,我已经找到了两种让 LV 再次无缝工作的方法,而无需关闭和打开它并拍打镜子:

    模拟半按快门按钮

    即这个简单的代码将LV返回到正常工作模式:

    SendCommand(Camera.Handle, PressShutterButton, ShutterButton_Halfway_NonAF);
    SendCommand(Camera.Handle, PressShutterButton, ShutterButton_OFF);
    

    使用 kEdsPropID_Evf_OutputDevice 标志

    您可以将 LV 输出更改为相机而不是 PC,关闭 PC 输出,然后再次打开 PC 输出。镜子不会动。这意味着首先将kEdsPropID_Evf_OutputDevice 设置为KEdsEvfOutputDevice_TFT,然后立即将其重新设置,但这次设置为KEdsEvfOutputDevice_PC(或KEdsEvfOutputDevice_TFT | KEdsEvfOutputDevice_PC,如果您想保留相机输出)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      相关资源
      最近更新 更多