作为一个更大项目的第一步,我试图使用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()passes,用gdb确认)。最初我是0而不是-1。搜索此站点时,建议使用-1,但没有效果。我也尝试了13,正如另一个用户所建议的那样。
我可以使用mplayer显示我的网络摄像头,更具体地说是mplayer tv:// -tv driver=v4l2

最佳答案

v4l2是“linux视频”驱动程序。我注意到OpenCV可以通过编译-DWITH_V4L-DWITH_LIBV4L来安装这种驱动程序(Gentoo中的USE flag)。在用它重新编译OpenCV之后,它成功地识别了网络摄像头。显示图像似乎需要GTK支持。

关于c - OpenCV无法识别网络摄像头,但mplayer成功,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52809317/

10-11 15:22