我的应用程序使用C#和相当轻量级的EDSDKWraper控制相机(我对此做了一些修改)。我基本上可以控制一切,如LiveView,调焦(自动+手动),设置和读取各种属性和拍摄图片,可选择使用自动对焦手链/堆叠。
但是,有一个问题:当我启动LiveView,然后用标准方式拍照时
SendCommand(Camera.Handle, PressShutterButton, ShutterButton_Completely_NonAF);
SendCommand(Camera.Handle, PressShutterButton, ShutterButton_OFF);它可以工作,我可以下载图片或取消下载使用Download + DownloadComplete或DownloadCancel函数。不幸的是,在此之后,不可能再获得LiveView映像,DownloadEvfImage将返回OBJECT_NOT_READY并将其永久返回。
唯一的出路是再次停止并启动LiveView,或者使用DoEvfAF命令启动LiveView自动聚焦。但我想避免这种情况。
这发生在佳能5D Mark和5DMarkIII上,同样的问题也发生在一个完全不同的C#框架上,我刚刚从网上下载了一个不同的例子。EOS实用程序似乎运行良好,因此似乎有一些方法。
"LiveView +拍照+ LiveView“在你的应用程序中工作吗,不管是C#还是C++?有什么我需要表演的把戏吗?
我已经花了很多时间来尝试搜索一个bug,比如没有发布数据,并且在网上搜索答案,但是到目前为止还没有找到答案。
发布于 2017-02-24 18:24:14
终于找到了正在发生的事情!因此,为了让其他人知道,镜头在液晶显示器上拍摄后,相机正在显示照片(即普通评论)。在此显示期间,LiveView无法工作!EOS实用程序没有保存相机卡上的图像,所以没有什么可查看的,LV继续不间断地运行。
无论如何,解决方案/解决办法是摆脱液晶显示器上的评审图像。到目前为止,我已经找到了两种方法,可以再次让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,然后立即将其设置为agan,但这一次设置为KEdsEvfOutputDevice_PC (如果希望保持相机输出,则为KEdsEvfOutputDevice_TFT | KEdsEvfOutputDevice_PC )。
https://stackoverflow.com/questions/42388263
复制相似问题