最近自己决定动手写一个视觉slam程序,

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

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

一个成熟完整的程序展现的是bin lib include src等文件夹,但是不可能将整个构造过程统统展现出来,对于小白来说,很难理解整个项目的搭建过程是怎样的,自己写代码,搭建项目的的时候可能仍是一头雾水,因此可以借写代码熟悉整个编译过程;

以后做改进,或者希望做框架的拓展时,也会更加得心应手;

话不多说,这一篇即是自己搭建slam程序遇到的第一个暗坑所做的总结;

做slam的第一步是从IO图片或者视频开始,我们很自然的要用到OpenCV,但是如果想要在opencv中使用sift算子,我们需要安装extra_modules(Opencv_contrib)组件,

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

安装Opencv和Opencv_contrib的时候要注意版本匹配,下面给出网址大家可以从里面挑选对应的版本:

OpenCV · GitHub

温馨提示:点击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

如何编译 opencv3 和 opencv_contrib(Linux) - klchang - 博客园

可能遇到这种问题

问题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:师兄加油!!! )

error: ‘linemod’ was not declared in this scope template<> struct pyopencvVecConverter<linemod::Match> · Issue #10844 · opencv/opencv · GitHub

问题3

如果出现关于build opencv_contribute fatal error boostdesc_bgm.i and vgg;

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

about build opencv_contribute fatal error boostdesc_bgm.i and vgg - OpenCV Q&A Forum

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

图片中标蓝的网址为:

Branches · opencv/opencv_3rdparty · GitHub

这是遇到的所有问题,如果大家遇到了其他问题,欢迎一起讨论;

Opencv+opencv_contrib安装相关推荐

  1. 多版本OpenCV+OpenCV_contrib安装及使用

    多版本的安装 对于多个版本都安装到了显式指定的路径上,可以参考文章2进行设置:若是有一种版本常用的,则将其安装到默认目录/usr/local下,而对于另一种新安装的,则显式指定安装目录CMAKE -D ...

  2. python安装opencv whl_Python 3.x 安装opencv+opencv_contrib的操作方法

    Note:这篇文章不会包含任何的技术解答,仅是安装教程.同样不保证对所有可能的安装中遇到的问题都能适用.不过如果不幸又幸运地遇到了跟我一样的问题,我希望你能从我这里找到解决方案. 前言 最近做作业需要 ...

  3. Opencv(C++)系列学习---opencv_contrib安装

    前言 由于OpenCV功能越来越臃肿,OpenCV3改变了项目架构,使用内核+插件的架构形式. 因此,OpenCV从2.x到3.x是一个很大的转变,对于很多功能不完善.性能不稳定的模块,都被放到了ex ...

  4. OpenCV 4.2.0 + opencv_contrib安装 (ubuntu16.04)

    官方发布版本: https://opencv.org/releases/ 官方教程地址: http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutor ...

  5. windows安装配置opencv opencv_contrib

    目录 前言 python用户 c++用户 一,下载cmake,opencv,opencv_contrib,Visual Studio 1,下载安装cmake 2,下载opencv,opencv_con ...

  6. ubuntu 源码安装 opencv + opencv_contrib

    教程 安装 准备 获取源码 编译 Release版本 Debug版本 问题 现成下载 安装 安装前一定先看一遍官方教程(Installation in Linux,opencv_contrib)和以下 ...

  7. opencv下载安装及介绍【初学,后续继续更新】

    1.下载 使用pip安装Opencv应该是最快最简单的安装方式了 pip install opencv-contrib-python 如果pip原始源下载慢的话可以考虑使用国内源: pip3 inst ...

  8. 【树莓派学习笔记】四、OpenCV的安装与卸载

    目录 安装 修改host以连接上Github 测试IP 修改树莓派的hosts 安装各种依赖包 安装OpenCV 只安装核心模块 安装核心模块和opencv_contrib C++ Opencv 测试 ...

  9. opencv python安装 centos_在Ubuntu中安装OpenCV-Python

    和Fedora差不多,Ubuntu安装OpenCV基本上和它是一致的,所以在安装方法上基本上大体相同,有一些不一样的地方我会着重写出来,下面的步骤是在Ubuntu 16.04和18.04(64位)测试 ...

  10. opencv +opencv_contrib+CMake+VS2015

    如果要用到opencv_contrib的扩展功能,就必须对OpenCV进行重新编译,步骤如下: 下载 opencv 3.4.10 官网 opencv_contrib 3.4.10:https://gi ...

最新文章

  1. 在当当买了python怎么下载源代码-python爬虫爬取当当网
  2. iOS开发系列--并行开发其实很容易
  3. java 服务器所在盘符_JAVA获取文件本身所在的磁盘位置 | 学步园
  4. java logger 静态,java11教程--公共静态接口System.Logger
  5. WebRTC十周年、Space X成功对接国际空间站、TikTok复制品Zynn或有快手支持|Decode the Week...
  6. SHD0新建屏幕变式
  7. LOJ#2145. 「SHOI2017」分手是祝愿
  8. 作者:景志刚(1977-),男,就职于中国人民银行征信中心数据部
  9. 国庆假期带动新能源汽车消费热潮
  10. python的新特性
  11. 10,求一个double型数据base的整数次方《剑指offer》
  12. html+css如何提升,用好这20个css技巧快速提升你的CSS技能
  13. C#多线程的用法2-线程的生命周期
  14. 判断入栈和出栈顺序是否一致
  15. 用SIR模型处理新冠疫情
  16. 二维码生成器如何制作圆形二维码
  17. Android聊天软件开发(基于网易云IM即时通讯)——发送图片消息(五)
  18. python爬取谷歌学术_python爬取谷歌热度
  19. 【调研】成功的IT公司的老板几乎都是技术出身
  20. php 如何将富文本内容输出到word里面且添加页眉和页脚

热门文章

  1. 等级保护--云计算安全扩展要求
  2. 曼昆《经济学原理》-微观经济学-随记(二)
  3. PLSQL 14.0.6 安装使用教程
  4. 32 道常见的 Kafka 面试题
  5. rinetd端口转发工具
  6. dms虚拟服务器,云服务器带dms
  7. Vmware虚拟机win10详细安装之典型安装
  8. 基于STC8的WS2812b全彩灯实现
  9. 制作一个含生僻字的矢量字体文件(*.shx)
  10. 2021年4月中国旅游行业网络关注度分析报告