如何让用户选择OpenCV的视频录制设备(网络摄像头)?

时间:2010-11-25 21:42:34

标签: c++ c console opencv device

所以我需要的是捕获设备列表。

还有一些功能可以从用户那里获取他想要传输的设备。

如何在win32 C ++控制台应用程序中使用openCV进行此类操作?

3 个答案:

答案 0 :(得分:5)

正如马丁所说,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提议的库。

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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