繁体   English   中英

通过EDSDK并行控制佳能相机

[英]Parallel control of canon cameras through EDSDK

我有以下问题:我有两台EOS550D相机连接到我的电脑。 在我的程序中,我有基于QThread的类,它将命令发送到摄像机。 区分两个摄像机没有问题,两者都可以控制,但是命令是并行发送的 - 第二个摄像机只有在首次聚焦并完成拍摄后才开始工作。 它是SDK限制还是我做错了什么? 我知道,这个任务可以通过使用两个pc和客户端\\服务器架构来完成,但我想在一台电脑上试一下)

EDSDK和摄像机在控制类中初始化,摄像机的会话在线程类对象中管理。 征集线程:

void CameraController::testShot()
{
//some variable checks and path set-ups
leftCameraThread->setPath(path1);
leftCameraThread->start();
rightCameraThread->setPath(path2);
rightCameraThread->start();
}

Thread run()函数:

void CameraControlThread::run()
{
EdsSendCommand(_camera, kEdsCameraCommand_TakePicture , 0);
}

EDSDK v2.10

您可以在SDK 2.11中控制多个摄像头。 pag 26

阅读EDSDK文档,声明您一次只能打开一个会话,这是SDK限制(2.10,第25页)

EDSDK文档(版本2.15,EDSDK_API.pdf,第2.10节)指出“请注意,EDSDK不支持同时打开多个摄像机的会话”

但这可能不正确,正如原始海报所述,OpenSession很可能有很多相机,发出命令,拍照,检索图像等。

OP的问题是关于同时触发多个摄像头。 每次调用kEdsCameraCommand_TakePicture都会将触发器发送到一个摄像头,并且该调用需要一些时间。 因此,如果您迭代所有摄像机并向每个摄像机发送kEdsCameraCommand_TakePicture,则摄像机将不会同步激活。 例如,以16 EOS 1dx为例,拍摄所有图像需要4秒钟。 我还没有找到一种方法将触发器同时发送到SDK中的多个摄像头。 (任何人?)除了SDK中的软件限制外,可能无法通过USB连接实现完美同步。 在多台摄像机上实现同步的推荐方法是在摄像机的触发连接器上使用外部同步信号。

然而这个问题有点陈旧,我找到了一个控制多个摄像头的解决方案,限制只是在一个过程中控制多个摄像头,但它可以控制多个摄像头来自多个过程(每个过程一个摄像头)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM