参考:html
https://www.cnblogs.com/hxzkh/p/8473190.htmllinux
将该博主的某一部分摘录出来bash
->lsdslam 中的opencv版本ui
三、编译 opencv
因为这个代码用到了opencv2.4 版本,因此咱们要下载对版本。以前一直编译不一样,觉得是下载的版本有问题,我下载了 2.4.九、2.4.1三、2.4.13.5,最后用 2.4.13版本跑通了,固然我不是说 2.4.九、2.4.13.5 等其余 2.4 版本不能跑通。为何这么说呢?由于我以前之因此出问题编译出错是由于我以前装了 3.1.0的版本,因此不行。因此,你能够试一试,我以为只要是 2.4. 的版本应该均可以。spa
这里我简单交代一下我曲折的编译之路。。。而后再给出正确方法。htm
首先说一下 opencv 版本的问题,以前跑另外一个程序须要opencv3,,那时候没玩过这,也不懂,就按默认路径安装了 opencv3.1.0,而后它本身就装到了 usr/local/include、usr/local/lib,还有share什么的,好多个文件夹,致使我卸载都很麻烦,要卸载它,你就得手动删掉它全部安装的路径下的相关文件,这些安装信息在安装时保存在了一个什么 install 文件中,具体我忘了(反正我是运行 unintall 不行,因此才手动一个一个删的)。blog
就这样,删掉了opencv3.1.0版本,结果仍是编译出错,说是找不到一些opencv里的程序,实际上是程序找不到opencv在哪里(由于我没有安装到默认路径,这个一会再说)。试了不少方法,最后发现,不光要设置环境变量,还要设置 CMakeLists 文件告诉程序 opencv 的路径。文档
那我为何要改变安装路径,而不是按默认安装到 usr 呢?固然是为了方便管理。如同你在 Windows 中安装软件,谁会默认安装到 C 盘啊?是吧,都是安装到别的盘,这样方便管理,还不会影响系统,重装时也不会丢失。linux下也是同样,改变了安装路径,就能够同时安装多个版本的 opencv,以应对不一样程序的需求。切换opencv版本有不少文档,百度一下就行。切换时只须要改变环境变量和 CMakeLists 文件中的设置就行。我下面安装 opencv 的方法就是这种。get
好了,言归正传,首先到官网下载 opencv2.4.13源码
将下载好的压缩包解压到你方便的位置,这里我是专门建了一个用来放 opencv 源码的文件夹(我把opencv2.4.九、2.4.1三、3.1.0版本源码都放在这里了):
cd ~/
mkdir opencv_src
而后创建一个用于安装 opencv 的文件夹,这个也是本身看着办,我一样是在 Home 下,而后每一个opencv版本各占一个文件夹:
cd ~/
mkdir opencv-2.4.13
因此最后个人格局是这样的:
而后进入解压后的 opencv-2.4.13,创建 build 文件夹并进入
mkdir build
cd build
执行:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=~/opencv-2.4.13 ..
注意不要丢掉最后的两个点!它狠重要!!
而后执行:
make
sudo make install
若是虚拟机配了双核,为了加快速度能够 make -j2 和 sudo make install -j2
安装后会发如今安装文件夹 opencv-2.4.13 中的 lib、bin等文件上面有小锁子标志,若是要消除这个小锁子,须要更改权限:
cd ~/
sudo chmod 777 opencv-2.4.13 -R
就能够了
而后配置 opencv 变量,编辑文件 /etc/ld.so.conf.d/opencv.conf(若是没有就会自动建立):
sudo gedit /etc/ld.so.conf.d/opencv.conf
而后添加 opencv2.4.13 的 lib 路径:
~/opencv-2.4.13/lib
保存退出,执行:
sudo ldconfig
编辑 ~/.bashrc ,最后添加:
#opencv-2.4.13
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:~/opencv-2.4.13/lib/pkgconfig
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:~/opencv-2.4.13/lib
保存退出,执行:
source ~/.bashrc
查看当前 opencv 版本,新开窗口执行:
pkg-config --modversion opencv
若是显示 2.4.13,说明当前opencv版本正是刚安装的 2.4.13