【问题标题】:linux/videodev.h : no such file or directory - OpenCV on ubuntu 11.04linux/videodev.h:没有这样的文件或目录 - ubuntu 11.04 上的 OpenCV
【发布时间】:2011-08-16 01:56:46
【问题描述】:

我尝试在 Ubuntu 11.04 上安装 OpenCV2.2。但是 OpenCV 编译失败,说明与 linux/videodev.h 文件相关的错误。 /user/includes/linux 中可用的文件名为 videodev2.h。

/home/user/OpenCV-2.2.0/modules/highgui/src/cap_v4l.cpp:217:28: fatal error:    linux/videodev.h: No such file or directory
compilation terminated.
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_v4l.o] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [all] Error 2

有解决办法吗?

谢谢。

【问题讨论】:

  • 更新版本可在https://code.ros.org/svn/opencv/trunk 获得。并且libv4l-dev需要安装其他库。
  • 编译VXL时也会出现这个错误。 Alberto 的回答,加上 Niroshan 的评论帮助我解决了这个问题。您必须对这两个文件进行 Niroshan 的更改:$VXLSRC/contrib/oul/oufgl/frame_grabber_v4l.h 和 $VXLSRC/contrib/oul/oufgl/frame_grabber_vil.h
  • 我只是想澄清一下,Niroshan 对 Alberto 的回答的评论解决了 VXL 的问题。

标签: c++ opencv ubuntu-11.04


【解决方案1】:

最近的内核版本(包括 Ubuntu 11.04 附带的版本)已放弃对 v4l 的支持。

编辑:您的问题与发送到 OpenCV 用户组的 recent message 相关联,其中包含在 Ubuntu 11.04 中编译 OpenCV 2.2 的说明。您的方法并不理想

【讨论】:

  • 我有几个问题,该链接告诉下载 libcv-dev libcvaux-dev libhighgui-dev 和 libcv2.1 libcvaux2.1 libhighgui2.1 库。它们不属于 OpenCV 的两个早期版本吗?后来它告诉下载OpenCV2.2源代码。这是准确的吗?请解释一下,我对 OCV 库不太熟悉。谢谢
【解决方案2】:
sudo apt-get install libv4l-dev

编辑基于 RH 的系统

在 Fedora 16 上安装 pygame 1.9.1(在 virtualenv 中):

sudo yum install libv4l-devel
sudo ln -s /usr/include/libv4l1-videodev.h   /usr/include/linux/videodev.h 

【讨论】:

  • 需要编辑 cap_v4l.cpp,将 #include 替换为 #include 按照 karlphillip 提供的链接中的建议
  • 或者更好的是,只需创建一个指向名为 videodev.h 的文件的符号链接。无需修补。
  • 对于那些在谷歌上搜索“linux/videodev.h”的人:我通过将 videodev.h 链接到 videodev2.h 修复了一个不同的软件 (stackoverflow.com/a/10641571/778990)。
  • 如何对 videodev.h 进行符号链接?好吧,请参阅下面的 bukzor 答案。
【解决方案3】:

补丁在这里:https://code.ros.org/trac/opencv/attachment/ticket/862/OpenCV-2.2-nov4l1.patch

通过在周围添加#ifdef HAVE_CAMV4L

#include <linux/videodev.h>

OpenCV-2.2.0/modules/highgui/src/cap_v4l.cpp 中并从174 行中删除|| defined (HAVE_CAMV4L2) 允许我编译。

【讨论】:

    【解决方案4】:

    当前答案不完整。安装libv4l-dev 会创建一个/usr/include/linux/videodev2.h,但不能解决无法找到linux/videodev.h 的问题。该库确实提供了头文件以实现兼容性,但未能将它们放在应用程序会查找它们的地方。

    sudo apt-get install libv4l-dev
    cd /usr/include/linux
    sudo ln -s ../libv4l1-videodev.h videodev.h
    

    这提供了linux/videodev.h,以及正确的版本(1)。

    【讨论】:

    【解决方案5】:

    对于 CMake,如果您不需要此库,请删除/禁用 with_libv4l with_v4l 变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      • 2022-07-12
      • 2016-01-05
      • 2018-01-28
      • 2015-04-10
      相关资源
      最近更新 更多