linux/videodev.h:没有这个文件或目录 - 在Ubuntu 11.04上安装OpenCV

69

我试图在Ubuntu 11.04上安装OpenCV2.2。但是OpenCV编译失败,提示与linux/videodev.h文件相关的错误。/usr/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 以及其他库。 - Niroshan
2
这个错误也会在编译VXL时出现。Alberto的回答,再加上Niroshan的评论帮助我解决了它。你必须对这两个文件进行Niroshan的更改:$VXLSRC/contrib/oul/oufgl/frame_grabber_v4l.h和$VXLSRC/contrib/oul/oufgl/frame_grabber_vil.h。 - Mirkules
1
我只是想澄清一下,是Niroshan在Alberto的回答中的评论解决了VXL的问题。 - diedthreetimes
5个回答

98
当前的答案不完整。安装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

这提供了一个正确版本(1)的linux/videodev.h


4
这个对我很有用,因为在Ubuntu 12.10上使用pip无法安装Pygame,但是这个方法解决了这个问题。 - kitti
我也在安装Pygame,这个方法对我也起作用了。如果你是通过pip(而不是apt)安装Pygame,请记得同时安装pygame的依赖项:http://askubuntu.com/questions/203630/easy-install-pygame-not-working-due-to-linux-videodev-h-no-such-file-or-direct - nucleartide
请提供所需的库以满足包含linux/videodev.h。此外,还可以在https://dev59.com/unDXa4cB1Zd3GeqP-UWA中找到详细信息。 - isync

72
sudo apt-get install libv4l-dev

为基于RH的系统进行编辑

在Fedora 16上安装pygame 1.9.1(在虚拟环境中):

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

9
需要编辑cap_v4l.cpp文件,将 #include <videodev.h> 替换为 #include <libv4l1-videodev.h>,正如 karlphillip 提供的链接所建议的那样。 - Niroshan
7
最好的情况是,只需创建指向名为“videodev.h”的文件的符号链接即可,无需打补丁。 - Tamás Szelei
1
对于那些在谷歌上搜索“linux/videodev.h”的人:我通过将videodev.h链接到videodev2.h来修复了另一个软件(https://dev59.com/j2865IYBdhLWcg3wEKOZ#10641571)。 - ignis
如何创建videodev.h的符号链接?好的,关于这个问题,请参考下面bukzor的回答。 - isync

3

3
近期的内核版本中已经放弃了对v4l的支持(包括Ubuntu 11.04附带的版本)。
编辑:你的问题与最近发送给OpenCV用户组的消息有关,其中包含在Ubuntu 11.04中编译OpenCV 2.2的说明。你的方法不是最理想的

我有几个问题,那个链接告诉我要下载libcv-dev、libcvaux-dev、libhighgui-dev和libcv2.1、libcvaux2.1、libhighgui2.1库。它们不属于OpenCV的两个早期版本吗?然后它又告诉我要下载OpenCV2.2源代码。这是准确的吗?请解释一下,我对OCV库不是很熟悉。谢谢。 - Niroshan

0

如果您不需要此库,请在CMake中删除/禁用with_libv4lwith_v4l变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接