笔者的系统是ubuntu14,之前安装的是opencv3.1.0,但是后来在装ROS的时候,ros-indigo-destop-full顺便安装了版本2.4.8的opencv,因为ROS里面的一些文件需要依赖于该版本的opencv,例如cv_bridge和image_pipeline。但是我查的系统是的opencv的版本是opencv3.1.0,之后无奈把opencv3.1.0卸掉了。查看opencv版本可以通过以下命令:
pkg-config --modversion opencv
现在,想要把opencv3.1.0安装回来,并且满足2.4.8和3.1.0自由切换的需求。
首先,给出opencv下载地址。
下载完之后,解压,在终端安装依赖项:
sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev
然后在解压后的文件下新建build文件,并且进入这个目录下。指令:
mkdir build
cd build
在/usr/local下新建文件夹opencv310,这个文件夹就是opencv的安装目录,然后cmake生成make文件并安装:
mkdir -r /usr/local/opencv310
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv310 ..
make install
如果一切正常的话,这时候的opencv310版本就好了。但是用指令查看opencv版本,这时候的版本仍是2.4.8。
版本切换:
紧接着需要配置下文件,通过修改bashrc文件来设置PKG_ CONFIG_PATH和LD_LIBRARY_PATH。打开bashrc文件指令:
gedit ~/.bashrc
因为之前安装了opencv2的版本,需要在~/.bashrc中添加
export PKG_CONFIG_PATH=/usr/local/opencv310/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv310/lib
保存之后,再使用命令:
source ~/.bashrc
到此,可以查知这时候的版本是3.1.0。
当要使用opencv3.1.0的时候,只需要在CMakeLists.txt中加入路径即可使用。
set(OpenCV_DIR "/usr/local/opencv310/share/OpenCV")
find_package( OpenCV 3.1 REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} "/usr/local/opencv310/include")
如果还想使用原来的opencv-2.4.8,只需要再修改PKG_CONFIG_PATH为opencv-2.4.8的pkgconfig路径即可。
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib
可以查知这时候的版本是2.4.8。
在CMakeLists.txt中将find_package(OpenCV 3.1 REQUIRED )换成find_package(OpenCV REQUIRED )即可,并将该代码上面一行和下面俩行删除即可:
find_package(OpenCV REQUIRED)
include_directories( ${OpenCV_INCLUDE_DIRS} )
opencv_contrib模块安装:
据官方说法,目前还不是太稳定的算法模块都在opencv_contrib里边,由于不稳定,所以不能在release版本里发行,只有在稳定以后才会放进release里边。但是这里边有很多我们经常要用的算法,比如SIFT,SURF等(在xfeatures2d 模块里边)。官网提供了说明,可以把opencv_contrib扩展模块添加编译到已安装的opencv3.0.0里边,也可以安装的时候直接把扩展模块编译进去一并安装。
首先,提供opencv_contrib下载地址
解压后将文件放在opencv源文件下。然后进入源文件下之前安装opencv时建立的build。
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv310 -D OPENCV_EXTRA_MODULES_PATH= ..
OPENCV_EXTRA_MODULES_PATH 这个路径就是到你解压后的opencv_contrib的路径。
最后,make+make install即可。