Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;-OpenCV-带cvCaptureFromCam的圆形开关摄像机_C++_Opencv - Fatal编程技术网

C++ c++;-OpenCV-带cvCaptureFromCam的圆形开关摄像机

C++ c++;-OpenCV-带cvCaptureFromCam的圆形开关摄像机,c++,opencv,C++,Opencv,我的应用程序可以在连接了0或100个摄像头的计算机上执行。我需要做的代码切换相机,直到电脑并没有更多的相机使用。在这种情况下,源应再次为0。为了实现这一点,我使用了以下代码: CvCapture * capture = cvCaptureFromCAM(_source); // Try to open capture and if it fails go to first camera if(!capture){ _source = 0; capture = cvCapture

我的应用程序可以在连接了0或100个摄像头的计算机上执行。我需要做的代码切换相机,直到电脑并没有更多的相机使用。在这种情况下,源应再次为0。为了实现这一点,我使用了以下代码:

CvCapture * capture = cvCaptureFromCAM(_source);

// Try to open capture and if it fails go to first camera
if(!capture){
    _source = 0;
    capture = cvCaptureFromCAM(_source);
}
使用此代码,我想尝试使用一个源(例如3),如果计算机没有3个摄像头,请转到第一个摄像头(源0)。问题是,尽管源为5,但cvCaptureFromCAM始终返回有效的捕获,并使用最后一个摄影机的捕获,从不为NULL以切换到0并从摄影机0获取源。你知道如何实现这个“循环”开关吗


一个选项是获取此范围内的相机数量并执行模块操作,但据我所知,OpenCV没有一种方法来获取可用相机的数量。

“上次使用的相机”表明您实际上没有释放该相机。在切换到新相机之前,请尝试释放旧相机。

“上次使用的相机”表明您实际上没有释放该相机。在切换到新相机之前,请尝试释放旧相机。

谢谢您的回答。如果我从0切换到1,从1切换到2。。。问题与释放相机无关,而是从“ncameras”(最后一个)切换到0。另外,当捕获结束时,我正在执行cvReleaseCapture。谢谢您的回答。如果我从0切换到1,从1切换到2。。。问题与释放相机无关,而是从“ncameras”(最后一个)切换到0。另外,捕获结束时,我正在执行cvReleaseCapture。