【发布时间】:2015-10-25 07:54:47
【问题描述】:
我的应用程序可以在连接了 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 没有一种方法来获取可用相机的数量。
【问题讨论】: