66

我尝试在 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

有解决方案吗?

谢谢你。

4

5 回答 5

95

目前的答案是不完整的。安装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) 的 , 和 。

于 2012-12-25T00:54:50.133 回答
71
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 
于 2011-05-05T13:49:34.557 回答
3

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

编辑:您的问题与最近发送到 OpenCV 用户组的消息有关,该消息包含在 Ubuntu 11.04 中编译 OpenCV 2.2 的说明。你的做法并不理想

于 2011-04-30T19:52:58.860 回答
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|| defined (HAVE_CAMV4L2)从行中删除174允许我编译。

于 2011-05-12T14:51:36.397 回答
0

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

于 2016-11-01T19:51:31.720 回答