佳能EDSDK - 多个摄像头 - 同时拍照

时间:2018-04-08 12:41:57

标签: c# wpf edsdk canon-sdk

我正在使用此库:https://www.codeproject.com/Articles/688276/Canon-EDSDK-Tutorial-in-Csharp

我有多台相机(Canon EOS 1300D)。我用API加载它们:

CanonAPI canonAPI = new CanonAPI();
List<Camera> cameras = canonAPI.GetCameraList();

然后我做了一些设置(在PC中保存文件,而不是在摄像机和打开会话中)。之后我想一次制作多张照片。就像彼此接近一样。现在我能想到的就是:

foreach (Camera camera in cameras)
{
    camera.TakePhotoAsync();
}
可悲的是,这种做法有点拖延。但是在多个摄像头(5)中,延迟有点200-300ms(我想,不记得了),这太大了。

另一个信息:拍照时我使用WPF和按钮。相机通过USB集线器连接,没有SD卡,我将照片直接保存到计算机。一切正常,我需要一次拍照。

2 个答案:

答案 0 :(得分:1)

尝试使用并行循环

Parallel.ForEach(cameras , camera =>
{
     //Your stuff
});

使用文件和线程时要小心使用并行循环。 你可以阅读Parallel loops

答案 1 :(得分:0)

要解决我项目中的串行执行延迟问题,我在多台摄像机之间并联了远程快门线。然后,我使用USB继电器触发远程快门线同时拍摄照片,并使用downloadReady事件下载图像。