网上查了些资料,试图通过USB摄像头名称获取index,从而打开指定摄像头,代码如下:
std::vector<std::string> list;
listDevices(list);
for (int i=0; i<list.size();i++)
{
if (list[i] == "Vimicro USB Camera (Altair)")
CamId = i;
}
cv::VideoCapture cap;
cap.open(CamId);
编译通过后挺好使,谁知第二天重新开机,竟然打开的是另外的USB摄像头!!!
追踪半天没发现异常,只能得出结论是ListDevice得到的index跟VideoCapture open的index不是同一个index!!!
只好去看OpenCV文档:

ListDevice是基于DS的,把open函数改为cap.open(CamId,cv::CAP_DSHOW);
一切正常!
博主试图通过USB摄像头名称获取index来打开指定摄像头,编译通过后正常,但重启开机打开了其他摄像头。经追踪发现ListDevice得到的index与VideoCapture open的index不同,查看OpenCV文档后,将open函数改为cap.open(CamId,cv::CAP_DSHOW),问题解决。

5503

被折叠的 条评论
为什么被折叠?



