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

Rel*_*lla 7 c c++ console opencv device

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

还有一些功能可以从用户那里得到他想要传输的设备.

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

Adi*_*Adi 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;
Run Code Online (Sandbox Code Playgroud)

现在你有了许多相机设备,所以你可以让你的用户从列表框的索引中选择一个.

缺点是OpenCV不会向您提供有关设备名称的任何信息,因此如果您想要实现这一点,您应该查看Microsoft DirectShow或Martin提议的库.


Utk*_*nha 1

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