【问题标题】:Canon EDSDK - Multiple cameras - Take photo simultaneously佳能 EDSDK - 多台相机 - 同时拍照
【发布时间】:2018-04-08 12:41:56
【问题描述】:

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

我有多个相机(佳能 EOS 1300D)。我用 API 加载它们:

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

然后我进行一些设置(将文件保存在 PC 中,而不是相机中并打开会话)。之后我想一次制作多张照片。就像彼此靠近一样。现在我能想到的只有这样:

foreach (Camera camera in cameras)
{
    camera.TakePhotoAsync();
}

遗憾的是,这种方法有一点延迟。但在多台摄像机 (5) 中,延迟大约为 200-300 毫秒(我想,不记得了),这太大了。

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

【问题讨论】:

    标签: c# wpf edsdk canon-sdk


    【解决方案1】:

    尝试使用并行循环

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

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

    【讨论】:

    • 嗯,从来没有听说过 - 会尝试。连接相机等需要一些时间。谢谢!
    • 谢谢,这样效果更好。还有一些微小的延迟。我想这永远不会更好。我将尝试使用多个摄像头(目前我只有两个用于测试)。
    • @Stepan,由于佳能 SDK 的工作方式,总会有延迟。命令必须以串行方式执行,即使使用多个摄像机也是如此。我正在研究您使用的库的继任者,这可能对您的情况有所帮助。如果您有兴趣尝试,请使用我主页上的联系表格,您可以在我的 stackoverflow 个人资料中找到链接。
    • 谢谢,今天我想告诉你,它没有帮助。并行只是在乱序拍照,但还是一张一张。我会看的。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多