c++ - 使用 OpenCV 的多个摄像头

标签 c++ opencv locking camera

我正在编写一个程序,使用 OpenCV 一次从两个相机获取捕获(我不是为了立体视觉而这样做)。使用标准的 OpenCV 函数 cvCaptureFromCAM() 从两个相同的相机获取捕获以及 cvQueryFrame() 在 while 循环中被调用两次(每次捕获一次),我当我在 cvNamedWindow 中显示它们时,最终会在两个相机中看到垃圾图像。

或者,如果我在各自的 POSIX 线程(因此具有相同的地址空间)中运行每个摄像头,我会在第二个线程中遇到段错误,我无法找出原因。

最后,我可以在其自己的进程中运行每个摄像头(因此单独的地址空间)并且一切运行良好。我怀疑在从不同的相机进行每个帧查询之前,必须获取某种锁定类型的资源。希望有人对如何在同一个进程和同一个线程中获取两个捕获有一些想法。谢谢!

最佳答案

什么操作系统?

这在很大程度上取决于相机及其驱动程序 - 特别是在使用 Directshow 的 Windows 上,如果它们一起工作,如果您需要以特定顺序或以特定方式启动它们,则很有可能。

如果你可以在单独的线程中独立运行相机并让它们通过一些中立系统(命名管道、tcp 套接字、ramdisk 中的文件)写入图像,你可能会发现更可靠

关于c++ - 使用 OpenCV 的多个摄像头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7437472/

相关文章:

c++ - 如何在 Boost::Statechart 中向一个状态添加超过 20 个转换?

c++ - 在尝试连接时取消 curl_easy_perform

python - Python 的 file.write 是原子的吗?

terminal - 如何删除本地 npm 安装的 sudo 要求?

mysql - 如何在 celery 工作人员之间实现类似锁文件的机制?

c++ - move 赋值运算符和虚拟继承

c++ - 创建通用模板类以按变量对不同类进行排序

OpenCV putText UTF-8 字符

c++ - 在不循环的情况下屏蔽浮点 cv::Mat

c++ - OpenCV读取图像像素值