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

标签 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

最佳答案

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

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

相关文章:

c - while(i--) 通过 gcc 和 clang 优化 : why don't they use sub/jnc?

c - mbed-OS 移植到 TivaC TM4123,动态中断处理问题

c++ - 将 C/C++ 源文件作为插件包含在 IL2CPP 中

linux - Oracle 11.2 在随机时间对简单 SQL 有 2 秒的延迟

regex - U-Boot版本提取对比

python - 二维多边形的交集

opencv - 使用 OpenCV 2.4.3 在 Visual Studio 2010 中无法加载 Haar Cascades 的 XML 文件

c - 日志调用在 C 中返回 NaN

ruby - 监控 Ruby 脚本,使用 Monit - 包括 RVM

Python:在opencv中手动合并 channel