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

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

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

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

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

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

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