网上查了些资料,试图通过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文档:

OpenCV4.0打开指定USB摄像头问题

ListDevice是基于DS的,把open函数改为cap.open(CamId,cv::CAP_DSHOW);

一切正常!

相关文章:

  • 2021-05-14
  • 2022-01-06
  • 2022-02-10
  • 2021-11-21
  • 2021-10-31
  • 2021-05-17
  • 2021-07-07
  • 2021-11-26
猜你喜欢
  • 2021-05-01
  • 2022-12-23
  • 2021-04-15
  • 2021-12-27
  • 2021-07-05
  • 2021-06-19
相关资源
相似解决方案