C++ 如何让用户使用OpenCV选择视频录制设备(网络摄像头)?
所以我需要的是类似于捕获设备列表的东西 还有一些函数可以让用户知道他想在哪台设备上传输数据C++ 如何让用户使用OpenCV选择视频录制设备(网络摄像头)?,c++,c,console,opencv,device,C++,C,Console,Opencv,Device,所以我需要的是类似于捕获设备列表的东西 还有一些函数可以让用户知道他想在哪台设备上传输数据 如何在OpenC++中使用OpenCV进行这样的事情?< P>在OpenCV(AFAIK)中不直接支持,但是尝试< P>马丁说OpenCV不支持,但你可以使用一个小技巧。如果满足您的需要,您可以通过调用cvCreateCameraCapture()连续枚举摄影机,直到返回NULL,从而找出摄影机的数量 像这样的事情: CvCapture *cap; int n = 0; while(1) { cap
如何在OpenC++中使用OpenCV进行这样的事情?< P>在OpenCV(AFAIK)中不直接支持,但是尝试< P>马丁说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 hack,因为某些原因,它有时不起作用)。在我的计算机上,无论我放什么索引,它都会返回默认的摄像头,尽管我只连接了2个。