关于Canon Edsdk 2.14API与C++的一些问题

Some questions about Canon Edsdk 2.14API with C++

本文关键字:问题 C++ Canon Edsdk 14API 关于      更新时间:2023-10-16

我是一名使用EDSDK 2.14的C++新程序员。我正在使用佳能EOS 5D Mark II,我有一些问题要做(我正在启动api,相机会话,处理程序,设置容量,我的程序拍照,设置相机的正确参数,我正在使用windows消息来处理一些事件):

1) 我需要将照片保存在主机中,我这样做是正确的,但相机只允许在内部缓冲区中保存8张照片,我需要测试一些参数组合(AV、TV和ISO SPEED)。当我按下‘s’时,我会循环拍摄10张照片(带有windows消息、回调),但只拍摄了8张照片,其他照片都有忙错误,所以我想这是内部缓冲区。如何在一个windows事件中正确更改参数,拍摄8张以上的照片?ps:我试图重新打开会话(再次使用相机关闭和打开会话),但这不是一个好主意,因为传输(下载图像)的事件句柄只在对象释放时设置。

2) 我试图获得一张照片并下载,但不可能,当我按下‘s’时,程序等待拍摄8张照片,然后相机将事件回调发送到句柄以下载所有图像。我想按‘s’,程序拍一张照片,下载并拍摄其他照片,如果可能的话,我该怎么做?

3) 如果我制定了一个方法来设置AV,TV,ISO速度参数,这将被及时发送到相机拍摄照片,或者我需要等待相机的回调。如果我需要这样的东西,我需要使用什么事件?ps:我的程序都是异步的,我不使用线程,只使用回调和windows事件。

4) 我在互联网上搜索,想找到正确的焦点,但有些人说这只有在实时视图中才可能,我不能在我的应用程序中使用它。是否可以在没有实时视图的情况下更改焦点?ps:因为我需要一张好照片和我的程序的相机自动对焦,没有像EOS实用程序那样做同样质量的图像,我在想他们是否在拍摄的图像中进行了pos处理

如果我有更多的问题或我解决了问题,我会回答所有的社区,因为太多的人正在使用这个API,这不是太微不足道。对不起,我的英语不是母语,但我正在尽力做到最好。

ad 1)你需要在相机的内部缓冲区溢出之前下载图像,就像你在2 中尝试的那样

ad 2)确保您的程序在发送第一个快照命令后,以某种方式返回到"全局"事件循环中。这将使EDSDK有机会处理相机事件,并将"下载可用"事件发送到您的回调。从那里拿走

ad 3)不能保证是否应用这些事件,您宁愿附加到属性更改事件(kEdsPropertyEvent_PropertyChanged)或在之后的某个时间轮询

广告4)您可以使用liveview和基于镜头的AF。对于后者,请探索kEdsCameraCommand_ShutterButton_Halfway

想分享你项目的目标吗?