4

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

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

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

线程运行()函数:

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

EDSDK v2.10

4

4 回答 4

4

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

于 2012-10-12T19:58:59.170 回答
1

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

于 2012-08-08T00:45:09.827 回答
1

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

但这可能是不正确的,正如原发帖者所说,OpenSession 与许多相机,发出命令,拍照,检索图像等是很有可能的。

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

于 2014-11-28T13:33:38.593 回答
1

但是这个问题有点老了,我找到了一次控制多个相机的解决方案,限制只是在单个进程中控制多个相机,但是它可能从多个进程控制多个相机(每个进程一个相机)。

于 2016-12-28T14:04:22.717 回答