我正在编写一个程序,使用 OpenCV 一次从两个相机获取捕获(我不是为了立体视觉而这样做)。使用标准的 OpenCV 函数 cvCaptureFromCAM()
从两个相同的相机获取捕获以及 cvQueryFrame()
在 while 循环中被调用两次(每次捕获一次),我当我在 cvNamedWindow
中显示它们时,最终会在两个相机中看到垃圾图像。
或者,如果我在各自的 POSIX 线程(因此具有相同的地址空间)中运行每个摄像头,我会在第二个线程中遇到段错误,我无法找出原因。
最后,我可以在其自己的进程中运行每个摄像头(因此单独的地址空间)并且一切运行良好。我怀疑在从不同的相机进行每个帧查询之前,必须获取某种锁定类型的资源。希望有人对如何在同一个进程和同一个线程中获取两个捕获有一些想法。谢谢!
最佳答案
什么操作系统?
这在很大程度上取决于相机及其驱动程序 - 特别是在使用 Directshow 的 Windows 上,如果它们一起工作,如果您需要以特定顺序或以特定方式启动它们,则很有可能。
如果你可以在单独的线程中独立运行相机并让它们通过一些中立系统(命名管道、tcp 套接字、ramdisk 中的文件)写入图像,你可能会发现更可靠
关于c++ - 使用 OpenCV 的多个摄像头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7437472/