【问题标题】:c++ - OpenCV - Circular switch cameras with cvCaptureFromCamc++ - OpenCV - 带有 cvCaptureFromCam 的圆形开关相机
【发布时间】: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 没有一种方法来获取可用相机的数量。

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答。如果我从 0 切换到 1,从 1 切换到 2,则开关正常工作......问题与释放相机无关,是从“ncameras”(最后一个)切换到 0。另外,我正在做 cvReleaseCapture 时捕获结束。
    猜你喜欢
    • 1970-01-01
    • 2017-01-09
    • 2016-06-12
    • 2011-03-21
    • 2013-02-13
    • 2020-09-28
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多