Opencv+opencv_contrib安装

最近本身决定动手写一个视觉slam程序,html

 

写代码不只仅加深对slam实现原理的理解,同时提高使用cmake、kdevelop等工具的python

熟练度,这些是编译大型项目的基础;git

一个成熟完整的程序展示的是bin lib include src等文件夹,可是不可能将整个构造过程通通展示出来,对于小白来讲,很难理解整个项目的搭建过程是怎样的,本身写代码,搭建项目的的时候可能还是一头雾水,所以能够借写代码熟悉整个编译过程;github

之后作改进,或者但愿作框架的拓展时,也会更加驾轻就熟;算法

 

话很少说,这一篇便是本身搭建slam程序遇到的第一个暗坑所作的总结;ubuntu

作slam的第一步是从IO图片或者视频开始,咱们很天然的要用到OpenCV,可是若是想要在opencv中使用sift算子,咱们须要安装extra_modules(Opencv_contrib)组件,框架

由于sift和surf是须要专利付费的算法,专利权隶属于哥伦比亚大学,所以opencv3将一些不稳定的或须要专利付费的算法整理出了一个模块,因此若是工业界的同窗们须要用这两个算法的时候(竟然不用ORB?),要谨慎呀。工具

 

安装Opencv和Opencv_contrib的时候要注意版本匹配,下面给出网址你们能够从里面挑选对应的版本:网站

https://github.com/opencvui

舒适提示:点击opencv(or opencv_contrib)

 

 

点击release,选择你想要的版本:

 

 

 选择须要的版本和文件(ubuntu下选择源码安装)。

 

OpenCV contrib组件的下载一样,两者版本要匹配!

切记不要直接在opencv界面上选择Clone and download,版本会是最新版本,和opencv_contrib不匹配;

 

卸载OpenCV

接下来咱们进去ubuntu;首先咱们须要先卸载安装的opencv版本(也能够选择不卸载,这里提供给你们卸载的方法,毕竟我还不清楚如何在ubuntu下实现opencv多版本共存):

 

1.彻底卸载opencv2

1.1.From repository,从软件仓库中安装的opencv2

sudo apt-get purge libopencv* 

1.2.From source,使用cmake自行编译安装的opencv你

首进入原先编译opencv2的build目录,在该目录下打开终端;再执行如下代码。

sudo make uninstall

cd ..

sudo rm -r build

sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

这一步可能有error,忽略之。最后执行以下操做:

sudo apt-get -purge remove opencv-doc opencv-data python-opencv

 

对一些error能够无视,实现上述步骤,可进入/usr/local/include/下查看是否仍是有opencv文档,若是没有,说明已经卸载成功;

安装OpenCV依赖项:

接下来咱们安装opencv的依赖项;在ubuntu下的好处就是对于任何操做几行指令就能够完成,很是方便:

 

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

sudo apt-get update

至此,依赖项安装完毕;

 

安装OpenCV以及Opencv_contribe组件

下面咱们开始安装opencv以及opencv_contrib组件:

首先将两者解压,若是选择的是zip文档解压代码为

unzip opencv-3.4.1.zip

unzip opencv_contrib-3.4.1.zip

 

解压后将opencv_contrib-3.4.1移动道opencv-3.4.1文档目录下;

进入opencv-3.4.1文档,采用外部编译的方式,输入下列代码:

mkdir build;

cd build;

关键是cmake的代码,由于各位ubuntu的系统配置不尽相同,所以可使用下列比较通用的代码:

cmake -D CMAKE_BUILD_TYPE=RELEASE \

    -DCMAKE_INSTALL_PREFIX=/usr/local/ \

    -DINSTALL_PYTHON_EXAMPLES=ON \

    -DINSTALL_C_EXAMPLES=ON \

    -DPYTHON_EXCUTABLE=/usr/bin/python \

    -DOPENCV_EXTRA_MODULES_PATH=/home/lxy/opencv/opencv-3.4.1/opencv_contrib-3.4.1/modules \

    -DWITH_CUDA=OFF \

    -DWITH_CUFFT=OFF \

    -DWITH_CUBLAS=OFF \

    -DWITH_TBB=ON \

    -DWITH_V4L=ON \

    -DWITH_QT=ON \

    -DWITH_GTK=ON \

    -DWITH_OPENGL=ON \

-DBUILD_EXAMPLES=ON ..

 

标红行意味着是各位须要根据本身的opencv解压后的文件目录以及opencv_contrib文件目录(你已经把它移动道opencv目录下了)作更改;

注意最后两个点不能省略(懂的天然懂,不懂的记得google呦),若是某些文档没有安装,可本身选择on 或者off选项,此处也有人采用cmake-gui来设置,可是实现懒的学,就先采用这种方式吧。

 

正常的话,便可进入编译,此时输入

make –j8

         -j8的意思是8核同时编译,也意味着8个进程同时编译(给非IT的我一点见识-、-)

        

         这个时候就会遇到各类各样的问题了:

除了下面这个blog

http://www.cnblogs.com/klchang/p/7510526.html

 

可能遇到这种问题

问题1

      

 

这个时候很简单,将contrib/modules/中的相关hpp文件移动到/usr/local/include下便可(花了我1-2个小时才明白这个道理),若是没有opencv2 创建对应的文件夹,记得在/usr/local/include目录下全部的操做都须要加sudo 权限

如创建opencv2文件夹:

sudo mkdir opencv2

 

如上述问题可采用

sudo cp –r <source-directory> <goal-directory>

相信这样的操做你们必定能够摸索成功

问题2

linemod问题,下面github上的一个哥们即把这个问题提出来,放在了网上,记得不须要加cv::只须要把#include <opencv2/rgbd/linemod.hpp>加到报错的hpp中便可,若是出现如问题1的 no such file or directory,采起问题1的解决方式便可。因此说,认真分析bug信息,坚持google,咱们会不断进步的(小N:师兄加油!!! )

https://github.com/opencv/opencv/issues/10844

 

问题3

若是出现关于build opencv_contribute fatal error boostdesc_bgm.i and vgg;

这个问题遇到的时候极为难受,由于根本毫无头绪,然而老是由大神给出答案,可参考opencv网站上的questions

http://answers.opencv.org/question/174456/about-build-opencv_contribute-fatal-error-boostdesc_bgmi-and-vgg/

我这里直接也给出解决方式:

 

 

图片中标蓝的网址为:

https://github.com/opencv/opencv_3rdparty/branches/stale

 

这是遇到的全部问题,若是你们遇到了其余问题,欢迎一块儿讨论;

相关文章
相关标签/搜索