我的应用程序可以在连接了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)。问题在于,虽然source是5,但cvCaptureFromCAM总是返回一个有效的捕获,捕获最后一个使用的摄像头,永远不会为NULL切换到0并从摄像头0获取源。任何关于如何实现这个“循环”切换的想法? / p>
选项是获取摄像机的数量并在此范围内进行模块操作,但据我所知,OpenCV没有一种方法可以计算可用的摄像机。
答案 0 :(得分:0)
“上次使用的相机”表示您实际上并未释放该相机。在切换到新相机之前尝试释放旧相机。