0

作为大型项目的第一步,我尝试使用 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.

4

1 回答 1

0

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

于 2018-10-15T03:18:29.117 回答