Linux安装两个版本的opencv

参考链接:还有关于cuda的方法,我没试.

原版本是3.1.0 因为想用opencv的legacy模块,所以安装了2.4.13.

1 查看当前版本opencv.

pkg-config --modversion opencv 

原本的版本安装在 /usr/local/include/opencv和 /usr/local/include/opencv2

新的版本路径得更改:/usr/local/include/opencv2.4.13/include/opencv  /usr/local/include/opencv2.4.13/include/opencv2

2    安装opencv2.4.13

下载官网opencv2.4.13的source源文件. 依赖项其实不用变了.

cd ....../opencv2.4.13

mkdir release

cd release

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/include/opencv2.4.13 ..

这个过程中报了关于cuda文件找不到的错误,我第一次编译opencv的时候还没装cuda 反正现在也基本用不上cuda 我就把CMakeLists.txt里所有关于cuda的文件都注释了.

make -j12

sudo make install -j12

3 配置Opencv的环境

这样opencv-2.4.13就被安装在了/usr/local/include/opencv2.4.13目录下.

接下来要对新安装的opencv-2.4.13进行配置,否则系统默认的还是opencv-3.1.0版本。

通过修改bashrc文件来设置PKG_ CONFIG_PATH

打开文件:      

vi ~/.bashrc (ps:我还在vi /etc/profile vi /etc/bash.bashrc都写入了 但是source的时候不成功 所以反正没用吧 我也没删)

在文件的末尾加入:

export PKG_CONFIG_PATH=/usr/local/include/opencv2.4.13/lib/pkgconfig

export LD_LIBRARY_PATH=  /usr/local/include/opencv2.4.13/lib

使用命令   esc从编辑模式进入命令模式 ZZ 保存并退出

然后在终端再输入:

source ~/.bashrc  保存

然后配置lib的路径:

cd /etc/ld.so.conf.d

touch opencv.conf

sudo vi opencv.conf

在opencv.conf里面写入:/usr/local/include/opencv2.4.13/lib

sudo ldconfig

这时候使用命令测试:

pkg-config --modversion opencv

pkg-config --cflags opencv  

pkg-config --libs opencv 

可以看到全都已经变成了opencv-2.4.13版本了。如果还想使用原来的opencv-3.1.0,只需要再修改PKG_CONFIG_PATH为opencv-2.4.8的pkgconfig路径即可。

4 暴力弱智解决问题

生气 完全搞不懂到底哪里出问题.

  • 虽然已经将上述工作都完成了 但是在编译delaunay的时候明明代码是find(opencv 2.4.13)找的还是原来的3.1.0 在project前面加上#set(OpenCV_DIR "/usr/local/include/opencv2.4.13/share/OpenCV")也没有 再加上#set(OpenCV_LIBS "/usr/local/include/opencv2.4.13/lib")也没用 把OpenCV_DIR改成CMAKE啥啥也没用
  • 然后又是一阵尝试 不知怎么回事代码上把鼠标移上去高亮的明明是2.4.13的新路径了 但还是会报错告知我没有legacy 这说明机器还是在老路径里面找 但是高亮又是怎么回事??计算机有毒? 上网搜索尝试无果后 第二天采取了弱智方法.
  • 把原来的/usr/local里的opencv3.1.0的include lib share bin备份之后全部换成了opencv2.4.13 这样不管是系统路径还是opencv3.1.0的路径找到的都是2.4.13 唉 没有办法的办法了.
  • 然后编译通过 orb dso stereo_dso delaunay 全部通过编译 运行delaunay 本来以为可以喘口气了 结果运行orb报错,注意这个错误将来dso也可能会有 到时候再调吧.报错:error while loading shared libraries3.1.0
  • 刚开始不知道为什么 orb明明是支持2.4.13的 然后灵光一闪想通了 因为orb 系统编译的时候把DBoW什么的先互相连接了 所以才会说需要3.1.0 所以就上orb github主页 重新编译一遍就ok 了 也就是这几句
cd ORB_SLAM2
chmod +x build.sh
./build.sh

之前的报错包括一个undefined reference to symbol 'ZN2cv6String10deallocateEv' 忘了是什么时候的了 反正最后通过弱智方法解决了 但是看到一个链接解决方法写的还挺详细.

猜你喜欢

转载自blog.csdn.net/zhengbq_seu/article/details/82851068