所以我需要的是捕获设备列表。
还有一些功能可以从用户那里获取他想要传输的设备。
如何在win32 C ++控制台应用程序中使用openCV进行此类操作?
答案 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,由于某些原因,它有时不起作用)。