【问题标题】:How to let user select a video recording device (web-cam) with OpenCV?如何让用户使用 OpenCV 选择视频录制设备(网络摄像头)?
【发布时间】:2011-05-15 22:14:41
【问题描述】:

所以我需要的是捕获设备列表之类的东西。

还有一些功能可以从用户想要在哪个设备上流式传输。

如何在 win32 C++ 控制台应用程序中用 openCV 做这样的事情?

【问题讨论】:

    标签: c++ c console opencv device


    【解决方案1】:

    正如 Martin 所说,OpenCV 不支持它,但您可以使用一些小技巧。如果满足你的需求,你可以通过调用cvCreateCameraCapture()依次枚举摄像头,直到返回NULL,找出摄像头的数量。

    这样的:

    CvCapture *cap;
    int n = 0;
    while(1)
    {
       cap = cvCreateCameraCapture(n++);
       if (cap == NULL) break;
       cvReleaseCapture(&cap);
    }
    
    cvReleaseCapture(&cap);
    return n-1;
    

    现在您有许多相机设备,因此您可以让您的用户通过其索引从列表框中选择一个。

    缺点是 OpenCV 不会为您提供有关设备名称的任何信息,因此如果您也想完成此操作,您应该查看 Microsoft DirectShow 或 Martin 建议的库。

    【讨论】:

    • 在我的电脑上,无论我放什么索引,它都会返回默认相机,尽管我只连接了 2 个。
    【解决方案2】:

    opencv (AFAIK) 不直接支持,但请尝试http://www.muonics.net/school/spring05/videoInput/

    【讨论】:

      【解决方案3】:

      尝试使用一些操作系统函数来枚举网络摄像头。这可能需要一些工作,但这种方法将保证您每次都能获得一个列表(与 OpenCV hack 不同,由于某种原因,它有时不起作用)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-10
        • 1970-01-01
        • 1970-01-01
        • 2015-02-28
        • 2013-12-22
        • 1970-01-01
        相关资源
        最近更新 更多