cvCaptureFromCAM导致程序挂起

cvCaptureFromCAM causes program to hang

本文关键字:挂起 程序 cvCaptureFromCAM      更新时间:2023-10-16

我有一个多摄像头设置和一个OpenCV应用程序,该应用程序一直在使用两个摄像头。一台相机是罗技C310,另一台是我在MacBook Pro上的内置相机。初始化时,我调用cvCaptureFromCAM(),每个相机调用一次。然而,连接第二台Logitech C310(共3台相机)会导致我的MacBook pro相机挂起对cvCaptureFromCAM()的调用。

罗技的两个摄像头配合得很好。一旦我为我的MacBook相机调用cvQueryFrame(),它就会挂起,但最终可能在2-3分钟后,它会返回一个看起来有效的指针(即不是NULL),但该相机没有初始化。我没有收到来自该相机的帧,并且在使用相机时通常为绿色的灯光没有点亮。

以下是我的代码片段:

for( size_t i = 0; i < NUM_CAMERAS; i++ ) // Works fine when NUM_CAMERAS is 2, but hangs when it is 3
{
    capture[i] = cvCaptureFromCAM( i );
    if( capture[i] != NULL )
    {
        // Start a thread for each camera
    }
}
// Threads manage calling cvQueryFrame() for each camera.

我确信这不是多线程的问题,因为cvQueryFrame()总是挂起,即使我没有启动任何新线程。

谢谢你的帮助-我很难找到其他有类似问题的人。

OpenCV 2.4.5OSX 10.8.4gcc 4.2问题5.0.2增强版1053002.4GHz英特尔酷睿i7,retina Mac,8BG RAM2个Logitech C310,1个MacBook Pro摄像头1 x沮丧的Dude

这是我的MacBook Pro的一个限制。运行2个USB摄像头以及内置的iSight(我相信它内部也是USB),第三个设备的初始化挂起。我无法提供技术原因,但似乎是USB带宽问题。

我使用Thunderbolt底座解决了这个问题(http://www.belkin.com/us/p/P-F4U055)其具有额外的USB端口。现在,我的应用程序运行良好,并按照应该的方式初始化所有相机。还验证了Apple Thunderbolt显示器(内置USB集线器)也能工作。

干杯!