-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多线程编译。不差这么一些时间。多线程编译出现过编译失败的情况。