网上查了些资料,试图通过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);
一切正常!