在ubuntu18.04中安装opencv_contrib-3.2.0采坑教程
温馨提⽰
本篇⽂章已经收录在我最新出版的书籍《机器⼈SLAM导航核⼼技术与实战》,感兴趣的读者可以购买纸质书籍来进⾏更加深⼊和系统性的学习,购买链接如下:
由于最近要在OpenCV3中使⽤SIFT和SURF特征提取,⽽⾃从OpenCV2升级到OpenCV3版本后,SIFT、SURF等这些算法都被移出opencv默认项⽬库,⽽被放到叫opencv_contrib的项⽬库。因此需要⼿动下载opencv和opencv_contrib的源码,然后将两个源码放在⼀起⼿动编译安装。
由于我的电脑是VMware虚拟机跑的ubuntu18.04,并且ubuntu18.04中安装了ROS-melodic,⽽ROS-melodic装完后默认就把opencv-3.2.0版本顺带安装好了。所以,为了与ROS-melodic⾥⾯⾃带的opencv-3.2.0版本保持⼀致,我是下载了opencv-3.2.0和opencv_contrib-3.2.0源码,⼿动编译与安装,来覆盖ROS-melodic⾥⾯⾃带的opencv-3.2.0版本。下⾯我列出了我的环境:
VMware虚拟机
ubuntu18.04
opencv-3.2.0
opencv_contrib-3.2.0
1.下载opencv-3.
2.0和opencv_contrib-
3.2.0源码
去github下载就⾏了,下载地址如下:
opencv-3.2.0下载地址:
opencv_contrib-3.2.0下载地址:
下载好后将这两个⽂件同时解压到同个⽂件夹下,我是解压在opencv_install这样⼀个⽂件夹,如下图所⽰。
ubuntu安装教程
2.安装相关依赖
在编译和安装opencv源码之前,需要先安装相关依赖库,安装命令如下:
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
上⾯命令执⾏会报错,错误说libjaster-dev⽆法安装,解决办法如下:
sudo add-apt-repository "deb security.ubuntu/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
3.⽤cmake-gui⼯具配置opencv编译参数
(1)安装cmake-gui⼯具
在正式编译opencv源码之前,需要对opencv中的CMake参数做设置,推荐⽤cmake-gui⼯具配置。先安装cmake-gui⼯具,如下命令:
sudo apt-get install cmake-gui
(2)设置cmake参数
打开终端,输⼊下⾯的命令,启动cmake-gui⼯具:
cmake-gui
在打开的界⾯中,将where is the source code栏中设成opencv-3.2.0的路径,将where to build the binaries栏中设成opencv-3.2.0/build的路径,如下图所
然后点击Configure按钮,进⾏配置。配置过程会报错误,错误说缺vgg_generated_48.i之类的,解决办法是直接去⽹上下载vgg_generated_48.i这个⽂件,下载地址如下:
下载好vgg_generated_48.i后,将这个⽂件复制到报错中提⽰的路径下就⾏了。以我的路径为例,⽤下⾯的命令复制:
cp vgg_generated_48.i /home/ubuntu1804/Downloads/opencv_install/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/.download/e8d0dcd54d1bcfdc29203d011a797179/vgg_generated_48.i
上⾯命令中路径⾥⾯的e8d0dcd54d1bcfdc29203d011a797179根据你实际报错提⽰为准,类似的缺这些⽂件的错误,去⽹上下对应的⽂件,同样的⽅法解决就⾏了。
补齐了这些⽂件后,然后再次点击Configure按钮,进⾏配置,应该就能正常配置了。
(3)设置cmake编译参数
在界⾯中将⼀下⼏个参数的取值设置好,具体参数和取值如下所⽰:
CMAKE_BUILD_TYPE参数取值Release,如下图所⽰。
OPENCV_EXTRA_MODULES_PATH参数取值/home/ubuntu1804/Downloads/opencv_contrib-3.2.0/modules,这个路径的前⾯⼏个⽂件夹⽤你的实际路径替代,如下图所⽰。
CMAKE_INSTALL_PREFIX参数取值/usr/local,如下图所⽰。
这⾥需要特别提⼀下,还需要将ENABLE_PRECOMPILED_HEADERS参数取值设成OFF。如果不关闭这个参数的话,后⾯编译会报错
误/usr/include/c++/7/cstdlib:75:15:fatal error:stdlib.h:No such file or direct.
上⾯这些编译参数都设置好后,就可以点击Generate按钮,⽣成makefile⽂件。
4.编译和安装opencv
切换到opencv-3.2.0/build⽬录,⽤make和make install编译和安装就⾏了。
cd ~/Downloads/opencv_install/opencv-3.2.0/build/
make
sudo make install
当你执⾏完上⾯命令的时候,并看到100%的时候,恭喜你!安装成功!
参考⽂献