如何区分OpenCV相机?
How to distinguish OpenCV cameras?
我正在编写 C++ class 来管理多个摄像头并从中读取帧。假设它是 OpenCV 的包装器。目前,我正在通过尝试创建 0-10 范围内的设备来寻找相机,如果有输出,我知道我已经找到了可以工作的相机。我总是可以保存这些相机的内部 ID 以区分它们,但是如果插入另一个相机怎么办?它可能会破坏 ID 的顺序。那么有什么方法可以通过获取它们的硬件 ID 来区分 OpenCV 相机吗?
我知道这对你帮助不大,但简短的回答是 "No, OpenCV doesn't currently provide that capability."
根据 doc,任何硬件 ID 都不是您可以使用 get 方法或任何其他方法检索的属性。
话虽如此,如果您非常想使用 OpenCV,我仍然会在各种平台上测试 OpenCV 2.4.10 的行为并使用各种中间件,看看它的行为如何。如果您获得了一致的行为,那么您可以 运行 使用它,但要为它在未来崩溃做好准备。对你有用的是 OpenCV 在后端使用各种中间件,例如 V4L、Qt 等,这些中间件维护得很好并且或多或少是一致的。
回想起来,对于商业软件,我现在会完全远离 OpenCV 的视频接口,除非您对我描述的情况没有意见。请注意 OpenCV 3.0 videoio 库此时不稳定并且有公开的错误报告。
我正在编写 C++ class 来管理多个摄像头并从中读取帧。假设它是 OpenCV 的包装器。目前,我正在通过尝试创建 0-10 范围内的设备来寻找相机,如果有输出,我知道我已经找到了可以工作的相机。我总是可以保存这些相机的内部 ID 以区分它们,但是如果插入另一个相机怎么办?它可能会破坏 ID 的顺序。那么有什么方法可以通过获取它们的硬件 ID 来区分 OpenCV 相机吗?
我知道这对你帮助不大,但简短的回答是 "No, OpenCV doesn't currently provide that capability."
根据 doc,任何硬件 ID 都不是您可以使用 get 方法或任何其他方法检索的属性。
话虽如此,如果您非常想使用 OpenCV,我仍然会在各种平台上测试 OpenCV 2.4.10 的行为并使用各种中间件,看看它的行为如何。如果您获得了一致的行为,那么您可以 运行 使用它,但要为它在未来崩溃做好准备。对你有用的是 OpenCV 在后端使用各种中间件,例如 V4L、Qt 等,这些中间件维护得很好并且或多或少是一致的。
回想起来,对于商业软件,我现在会完全远离 OpenCV 的视频接口,除非您对我描述的情况没有意见。请注意 OpenCV 3.0 videoio 库此时不稳定并且有公开的错误报告。