【问题标题】:How to distinguish OpenCV cameras?如何区分 OpenCV 摄像头?
【发布时间】:2015-04-30 12:07:11
【问题描述】:

我正在编写 C++ 类来管理多个摄像头并从中读取帧。假设它是 OpenCV 的包装器。目前,我正在通过尝试创建 0-10 范围内的设备来寻找相机,如果有输出,我知道我已经找到了工作相机。我总是可以保存这些摄像机的内部 ID 来区分它们,但是如果插入了另一台摄像机怎么办?它可能会破坏 ID 的顺序。那么有什么方法可以区分 OpenCV 相机,例如通过获取它们的硬件 ID?

【问题讨论】:

  • 为什么会破坏ID的顺序?您是否测试过这种情况,您知道这是事实吗?我并不是说 100% 不会,但在我看来它不应该。
  • OpenCV 不能保证这一点,我不能假设在我设计商业软件时它会保证。此外,这样的数据将使我能够为单个设备创建唯一的哈希,并允许我创建可在任何计算机和操作系统上运行的便携式配置文件。

标签: c++ linux windows macos opencv


【解决方案1】:

我知道这对您没有多大帮助,但简短的回答是“不,OpenCV 目前不提供该功能。”

根据doc,任何硬件 id 都不是您可以使用 get 方法或任何其他方法检索的属性。

话虽如此,如果您非常想使用 OpenCV,我仍然会在各种平台上测试 OpenCV 2.4.10 的行为并使用各种中间件,看看它的行为如何。如果你得到一个一致的行为,那么你可以使用它,但要为它在未来的中断做好准备。对您有用的是 OpenCV 在后端使用了各种中间件,例如 V4L、Qt 等,这些中间件维护良好且或多或少是一致的。

回想起来,对于商业软件,我现在会完全远离 OpenCV 的视频界面,除非你对我描述的情况感到满意。请注意,OpenCV 3.0 videoio 库此时不稳定并且有开放的错误报告。

【讨论】:

  • 那我要写我自己的库了。这将需要更多时间,但至少我会确定它具有我需要的功能。无论如何感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 2012-06-19
  • 2018-03-31
  • 2021-03-02
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多