【发布时间】:2011-05-15 22:14:41
【问题描述】:
所以我需要的是捕获设备列表之类的东西。
还有一些功能可以从用户想要在哪个设备上流式传输。
如何在 win32 C++ 控制台应用程序中用 openCV 做这样的事情?
【问题讨论】:
标签: c++ c console opencv device
所以我需要的是捕获设备列表之类的东西。
还有一些功能可以从用户想要在哪个设备上流式传输。
如何在 win32 C++ 控制台应用程序中用 openCV 做这样的事情?
【问题讨论】:
标签: c++ c console opencv device
正如 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 建议的库。
【讨论】:
opencv (AFAIK) 不直接支持,但请尝试http://www.muonics.net/school/spring05/videoInput/
【讨论】:
尝试使用一些操作系统函数来枚举网络摄像头。这可能需要一些工作,但这种方法将保证您每次都能获得一个列表(与 OpenCV hack 不同,由于某种原因,它有时不起作用)。
【讨论】: