背景
- ubuntu 14.04下进行SLAM开发,使用ros indigo,而indigo默认的opencv版本为2.4.8
- 在高翔博士的《SLAM十四讲》中,需要用到viz模块,此处需要使用的opencv版本为3以上。 因此需要在实际使用中切换opencv的版本。原则是opencv3不影响默认的opencv 2.4.8版本。
步骤
在安装时如果不小心用opencv3覆盖了原来的版本,首先用
sudo make uninstall
卸载,然后sudo apt-get install --reinstall libopencv-*
,将原来的opencv 2.4重新安装覆盖一遍。可以通过pkg-config --modversion opencv
命令来查看。安装opencv3可参考以下链接:http://rodrigoberriel.com/2014/10/installing-opencv-3-0-0-on-ubuntu-14-04/ 注意,在cmake时要单独创建opencv3的路径,比如我的opencv g3.4.0创建的路径为
CMAKE_INSTALL_PREFIX=/usr/local/opencv-3.4.0
而不是默认的/usr/local
在实际代码使用时,CMakeLists.txt的写法,此处基于高博士的imageBasics来给出一个例子:
cmake_minimum_required( VERSION 2.8 )
project( imageBasics )
添加c++ 11标准支持
set( CMAKE_CXX_FLAGS "-std=c++11" )
寻找OpenCV库
#find_package(OpenCV 2 REQUIRED) # 默认的库 find_package(OpenCV 3 REQUIRED PATHS "/usr/local/opencv-3.4.0/share/OpenCV") # 自己选择opencv 3
添加头文件
include_directories( ${OpenCV_INCLUDE_DIRS} )
#add_executable( imageBasics imageBasics.cpp )
链接OpenCV库
#target_link_libraries( imageBasics ${OpenCV_LIBS} )
在程序中查看OpenCV版本
#include <opencv2/core/version.hpp>
cout << "OpenCV version: " << CV_MAJOR_VERSION << "." << CV_MINOR_VERSION << "." << CV_SUBMINOR_VERSION << endl;
结果分别为:
OpenCV version: 2.4.8
OpenCV version: 3.4.0
备注:如果出现调用viz模块segment fault的情况时,cmake选项作修改:WITH_QT=OFF
参考:https://github.com/opencv/opencv/issues/4681