由于实验室需要用到ROS,在安装ros-indigo的时候,系统默认安装了 OpenCV2.4.8版本,直接使用还挺好的。但是,科研需要与时俱进啊,新版的OpenCV3.0以上集成了好多新的功能。比如说,近两年很火的目标跟踪算法KCF、Goturn算法等,都在OpenCV3.1中集成了,直接使用比较方便。但是,ros系统的运行,需要2.4.8版本中的一些比如CV_BRIDGE,所以,2.4.8版本不能卸载。但是,我又想安装3.2版本,于是,就有了这篇博文。
首先,使用命令查询你的OpenCV版本
pkg-config --modversion opencv
我的版本是2.4.8
安装opencv3.2
–首先下载新版本的opencv安装包,在这里我下载的是 opencv3.2,之后解压,安装opencv的依赖项
sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev
–进入解压后的opencv安装包,新建目录,目录名为build,并进入该目录
mkdir build && cd build
输入命令
cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D WITH_V4L=ON -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 ..
make
sudo make install
在这里,我将opencv3.2的安装目录放在了/usr/local/opencv320文件夹,如下图所示
紧接着需要配置下文件,通过修改bashrc文件来设置PKG_ CONFIG_PATH(后来发现好像还需要改一下LD_LIBRARY_PATH)
sudo gedit ~/.bashrc
在文件末尾加上
export PKG_CONFIG_PATH=/usr/local/opencv320/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv320/lib
保存之后,再使用命令
source ~/.bashrc
这时候使用命令,opencv版本已经变成3.2了
pkg-config --modversion opencv
不同版本切换
原来,在使用2.4.8版本的时候,我的CMakeList文件中是这么写的:(一个完整的opencv测试包,详细见我的博客主页)
project(test)
find_package(OpenCV REQUIRED)
add_executable(test src/test.cpp)
target_link_libraries(test ${OpenCV_LIBS})
cmake_minimum_required(VERSION 2.8)
如果切换成3.2版本的,需要这样改
project(test)
find_package(OpenCV REQUIRED)
set(OpenCV_DIR "/usr/local/opencv320/share/OpenCV")
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
add_executable(test src/test.cpp)
target_link_libraries(test ${OpenCV_LIBS})
cmake_minimum_required(VERSION 2.8)