ubuntu16.04 opencv多版本管理与切换

-DENABLE_CXX11=ON

https://blog.csdn.net/u012986684/article/details/77490824

大家好,今天说说,OpenCV的多版本切换问题!

其实总的来说很简单,说下方法!

1 首先当然准备两个不同版本opencv (比如2.4.9和3.1.0)

2 cmake-gui 设置 CMAKE_INSTALL_PREFIX

2.4.9 安装路径:/usr/local/opencv2

3.1.0 安装路径 :/usr/loacl/opencv3

3 安装

比如 按照2.4.9

新建build

cmake-gui …

选择CMAKE_INSTALL_PREFIX /usr/local/opencv2

生成makefile文件后

make -j16

同理 3.1.0 也是如此

4 设置管理

一般情况下不能直接opencv 的环境写到bashrc,所以我们需要手动进行切换

当你需要使用opencv 2.4.9的话,在终端输入:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv2/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv2/lib

生效

sudo ldconfig

当你需要使用opencv 3.1.0的话,在终端输入:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv3/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv3/lib

5 CmakeLists.txt设置

opencv3.1.0 需要手动设置 寻找到opencv-config.cmake

set(CMAKE_PREFIX_PATH "/usr/local/opencv3/share/OpenCV")

sudo gedit ~/.bashrc

6 常见可能会错误

error:1 /usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")

https://blog.csdn.net/u010566411/article/details/54317145

修改cmake_install_prefix,
opencv3.1 安装目录/usr/local/opencv3,
opencv2.4 安装目录/usr/local/opencv2,
在cmake-gui中可以搜索cmake_install_prefix,修改。
注意如果准备切换opencv版本,一定不要选择默认路径,否则,链接opencv的时候会因为多版本的lib发生链接冲突。

跳过系统环境变量的设置,设置/etc/profile和~/.bashrc导致同时使用不同版本时发生错误,所以跳过;
配置终端的环境变量,不同的终端设置不同的opencv

步骤:
打开终端,需要运行opencv3的,注意/usr/local/opencv3为opencv3.1的安装目录

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv3/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv3/lib

相应的,需要运行opencv2的,注意/usr/local/opencv2为opencv2.4*的安装目录

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv2/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv2/lib

pkgcongfig中的有opencv.pc保存有对应opencv的include和lib路径,但是sudo ldconfig后生效,
可以用下列三个命令验证

pkg-config --modversion opencv 
pkg-config --cflags opencv 
pkg-config --libs opencv 

优点:
可以不同版本的opencv同时编译;
缺点:
每个终端下运行opencv 都要设置对应的环境变量,新建终端默认没有opencv的环境变量需要从重新设置。

第七步:CMakeLists的一点点修改
因为usr/local/opencv3/share/OpenCV/OpenCVConfig.cmake中设置了opencv的配置,自定义路径安装opencv时,找不到这个文件OpenCVConfig.cmake,opencv-config.cmake
需要在项目的CMakeList.txt中添加OpenCVConfig.cmake的路径

set(CMAKE_PREFIX_PATH "/usr/local/opencv3/share/OpenCV")

gpu版本的opencv在cmake时有两个选项

CUDA_ARCH_BIN
CUDA_ARCH_PTX

第一个参考网址将gpu对应的计算能力填进去。
第二个参数后面的数值删除

编译时用make 不要用make -j多线程编译。不差这么一些时间。多线程编译出现过编译失败的情况。

你可能感兴趣的:(源代码)