Ubuntu下的完整OpenCV开发环境搭建 帮助文档

Ubuntu下的完整OpenCV开发环境搭建

 1. 操做系统

       强烈建议使用ubuntu16.04或ubuntu14.04,在windows下库的配置极其麻烦。目前比较主流的是ubuntu16.04,但高翔使用的是14.04,由于在他写《视觉SLAM十四讲》的时候ROS和OpenCV等重要部分对16.04缺少支持,如今支持已经相对完善了。

       尽可能不要尝鲜,尽可能不要尝鲜,尽可能不要尝鲜,重要的事情说三遍。什么,想用17.04?啊哈哈你肯定?

       这里须要解释一下为何不在Windows下使用Visual Studio。首先,环境变量和库的配置极其麻烦,并且每次创建新项目都要从新引用,很容易忽略重要的库而形成麻烦。别说确定都能记得住,除非写成一个文档每次新建项目的时候照着作,不然确定会丢东西;其次,在安装库的时候出现了g2o库死活装不上的问题,这一点让我直接放弃了Windows,转向了ubuntu。

       相比之下,ubuntu下库的配置极其简单,编译采用Cmake的形式,和VS下的习惯不太同样,但比在VS下逐条添加引用简单得多。若是配合Clion这种神通常的IDE,编程简直就是一种享受。IDE的问题接下来还会详细说明。

       总之,用Ubuntu就对了,千万不要尝试Windows。血的教训。

 

2. 关于使用虚拟机仍是双系统

用双系统会遇到电脑发热风扇狂转的问题,目前还没有解决;

用虚拟机会遇到运行不流畅,点云图显示不出来,某些库安装时死机的问题。

本身权衡吧,用台式机的话建议双系统,用笔记本的话建议找个台式机。【认真脸】其实虚拟机也是能够跑一下的,只不过在安装ORB SLAM2的时候会遇到卡死的问题,若是不用ORB SLAM2就不用担忧,放心大胆地用虚拟机吧。就是有点卡。

装双系统的时候会遇到引导的问题,必定要在bios里面设置ubuntu的引导为第一优先级,否则会直接进windows系统。缺点就是默认系统变成了ubuntu。至于分区那些细节的问题……

我仍是说一下吧,方式就是传统的u盘装系统,给电脑硬盘分出50G左右的空间,进入安装程序中的硬盘分区环节后,这样分区:

/:存储系统文件,建议10GB ~ 15GB;

swap:交换分区,即Linux系统的虚拟内存,建议是物理内存的2倍;

/home:home目录,存放音乐、图片及下载等文件的空间,建议最后分配全部剩下的空间;

/boot:包含系统内核和系统启动所需的文件,实现双系统的关键所在,建议200M。

       文件格式,除了swap设置成“交换分区”,其余的所有设置成Ext4。

       而后安装就好。记得在bios里关闭安全启动。

 

3. 编程环境

接下来的这一部分,个人建议是,在/home/【你的用户名】/路径下,分别创建文件夹,别分太多层,否则就是给本身添麻烦,以及混淆视听。以个人系统为例,我会将OpenCV放在/home/konia/OpenCV里面。另外在/home/【你的用户名】/路径下单独创建一个文件夹来放项目,这样会给本身省不少麻烦。

(1)OpenCV

首要的库就是OpenCV了,目前最新版本是3.3.0,最新的稳定版本是3.2.0,不过要是在OpenCV的官网上直接下默认的源代码,下载下来的是3.3.0,用起来也没遇到什么麻烦。OpenCV官网http://opencv.org/,在这里能够下载源代码。在ubuntu下安装opencv使用的方式是经过终端,以cmake的方式安装。如今终端中安装依赖项:

sudoapt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-devlibtiff4-dev libjasper-dev libopenexr-dev libtbb-dev

       顺便在这里简单讲一下Cmake编译,首先要有一个CMakeLists的txt文件,告诉编译器你须要编译哪些内容,这个“内容”在本身编写的项目中须要自行添加,而在OpenCV里面已经写好了这个文件,咱们只需编译便可。

       具体的步骤是,解压OpenCV,在终端中进入解压后的文件夹,而后在终端中:

       mkdirbuild

       cdbuild

       cmake..

       make

       这样就完成了编译,但对于OpenCV来讲,只有编译不够,还要安装:
       sudo make install

       这样才算安装完成。

(2)Eigens

       这是个线性代数库,在高翔github上的第三方库里能够找到。

网址:https://github.com/gaoxiang12/rgbd-slam-tutorial-gx

接下来会用到的Ceres和g2o也能够在这里找到。安装的方式和OpenCV大同小异。

(3)Ceres

       这个东西……说实话我还没用到不少,不过既然说了那就装一下吧。

依赖项:

sudoapt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-devlibgoogle-glog-dev libgtest-dev

(4)g2o

图优化库,这个很重要!

依赖项:

sudoapt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-devlibcxsparse3.1.2 libcholmod-dev

若是使用的是ubuntu 16.04,那么须要注意,g2o_viewer的使用须要加一点处理步骤,如下内容引自高翔博士的博客:http://www.cnblogs.com/gaoxiang12/p/4770813.html

“g2o_viewer运行不了了,问题是error while loading shared libraries: libg2o_viewer.so: cannot open shared object file: No such file or directory, 经帮主指点,发现问题的缘由是在默认状况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,经过源码包进行安装时,若是不指定--prefix会将库安装在/usr/local目录下,而又没有在文件/etc/ld.so.conf中添加 /usr/local/lib这个目录。这样虽然安装了源码包,可是使用时仍然找不到相关的.so库,就会报错。也就是说系统不知道安装了源码包。网络上的解决方法是在/etc/ld.so.conf里添加绝对路径/usr/local/lib,做为一个新手,我实在不知道怎么样添加进去,用gedit编辑以后,不能保存,用echo /usr/local/lib >> /etc/ld.so.conf没反应,因而我就采用了奇葩方法:用gedit打开/etc/ld.so.conf,而后添加/usr/local/lib ,再把这个文件保存到home,而后sudo cp -i  ld.so.conf /etc/ld.so.conf,以后,执行ldconfig(这一步是必须的,目的是利用ldconfig执行文件将 /etc/ld.so.conf的数据读入高速缓存中),再次运行g2o_viewer result_after.g2o(跑通《一块儿作7》,在data文件夹下生成的),成功!”

但在16.04下这还不够,咱们须要最新的g2o源代码,不能使用高博士在github上提供的g2o源码,由于那是针对14.04系统的。在新的g2o中已经解决了这些问题,因此咱们的不必多费周折了。

(5)PCL

       这个是点云库,很重要。目前的版本是1.8,直接在终端写:

       sudo apt-get install libpcl-dev pcl-tools

       便可。

(6)Qt

       由于文件太大一直没下,其实应该装一个的。

       【这部份内容等我尝试装过以后补全】

(7)ORB SLAM 2

       用虚拟机装这个会遇到死机的问题。

       具体安装过程参考http://blog.csdn.net/zzlyw/article/details/54730830

 

4. IDE的安装与使用

       说白了这是个ubuntu下运行的VS,我使用的是Clion,安装时输入个激活码就能够激活了,很容易。

       这货是ubuntu下获得编程神器,用过一次就爱上它了,自动在项目里生成CMakeLists文件,只需自行往里面添加编译项就能够了。以OpenCV为例:

       find_package( OpenCV REQUIRED ),寻找OpenCV库

       include_directories(${OpenCV_INCLUDE_DIRS} )

target_link_libraries(项目名称 ${OpenCV_LIBS} ),连接OpenCV库

 

其余的库与OpenCV相似。比较特别的是g2o,接下来的一段引用自高翔的博客:http://www.cnblogs.com/gaoxiang12/p/5304272.html


把g2o引入本身的cmake工程:

 html


# 添加g2o的依赖

# 由于g2o不是经常使用库,要添加它的findg2o.cmake文件

LIST( APPENDCMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules )

SET( G2O_ROOT/usr/local/include/g2o )

FIND_PACKAGE(G2O )

# CSparse

FIND_PACKAGE(CSparse )

INCLUDE_DIRECTORIES(${G2O_INCLUDE_DIR} ${CSPARSE_INCLUDE_DIR} )

 
同时,在代码根目录下新建cmake_modules文件夹,把g2o代码目录下的cmake_modules里的东西都拷进来,保证cmake可以顺利找到g2o。 ios

相关文章
相关标签/搜索