OpenCV无法识别网络摄像头,但mplayer成功

时间:2018-10-15 03:18:29

标签: c linux opencv webcam video4linux

作为更大项目的第一步,我试图使用OpenCV从我的摄像头显示图像:

#include <stdlib.h>                                                         
#include <opencv2/core/core.hpp>                                            
#include <opencv2/highgui/highgui.hpp>                                      

int                                                                         
main()                                                                      
{                                                                           
  cv::VideoCapture cap(-1);                                                 
  if (!cap.isOpened())                                                   
    exit(EXIT_FAILURE);                                                                                                                             
  cv::Mat frame;                                                            
  bool done = false;                                                        
  while (!done) {                                                           
    cap >> frame;                                                           
    cv::imshow("webcam", frame);                                            
    done = (cv::waitKey(30) >= 0);                                          
  }                                                                         
  return EXIT_SUCCESS;                                                      
}                                                                           

这将返回错误代码(!cap.isOpened()通过,已通过gdb确认)。最初,我使用0而不是-1。在搜索此站点时,建议使用-1,但无济于事。我也尝试过13,就像另一个用户建议的那样。

我可以使用mplayer(更具体地说是mplayer tv:// -tv driver=v4l2)显示我的摄像头。

1 个答案:

答案 0 :(得分:0)

v4l2是“ Linux视频”驱动程序。我注意到OpenCV可以通过使用-DWITH_V4L-DWITH_LIBV4L(Gentoo中的v4l USE标志)进行编译来安装该驱动程序。用它重新编译OpenCV后,它成功识别了网络摄像头。似乎需要GTK支持才能显示图像。