Ubuntu14.04 ROS自帶opencv2.4.8和opencv3.1多版本共存

        由於在安裝ROS時自帶的版本是opencv2.4.8的,這幾天調試程序需要使用opencv3.1.0的版本,這就需要opencv多版本的共存,在網上搜集了很多資料,結合自己安裝的過程記錄一下:     

使用命令查看當前的opencv版本:

pkg-config --modversion opencv 

ROS系統自帶的是opencv-2.4.8

安裝opencv3.1
–首先下載新版本的opencv安裝包,之後解壓,安裝opencv的依賴項。

1、從OpenCV官網上下載OpenCV官網上下載OpenCV的未編譯源代碼:opencv官網下載

2、國內很多網絡打開OpenCV官網速度緩慢,可以點擊如下地址直接從GitHub上下載OpenCV 3.1的源代碼:giuhub地址

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/opencv310 ..  
make 
sudo make install  
在這裏,我將opencv3.1的安裝目錄放在了/usr/local/opencv310文件夾

緊接着需要配置下文件,通過修改bashrc文件來設置PKG_ CONFIG_PATH(後來發現好像還需要改一下LD_LIBRARY_PATH)

sudo gedit ~/.bashrc 

在文件末尾加上

 export PKG_CONFIG_PATH=/usr/local/opencv310/lib/pkgconfig  
 export LD_LIBRARY_PATH=/usr/local/opencv310/lib  

保存之後,再使用命令

source ~/.bashrc  

這時候使用  

pkg-config --modversion opencv命令,opencv版本已經變成3.1了

配置
當你使用的是cmake工具時,在Cmakelist中加入路徑即可使用opencv3.1,當你想返回使用opencv2時,將find_package(OpenCV 3.1 REQUIRED )換成find_package(OpenCV REQUIRED )即可,其餘刪除。

#find_package(OpenCV REQUIRED)      #使用opencv2
cmake_minimum_required(VERSION 2.8)   #要求>2.8的版本
set(OpenCV_DIR /usr/local/opencv310/share/OpenCV)
find_package( OpenCV 3.1 REQUIRED )    #使用opencv3.1
#if(NOT OpenCV_FOUND)
#   find_package(OpenCV 3.1.0 QUIET)
#   if(NOT OpenCV_FOUND)
#      message(FATAL_ERROR "OpenCV > 3.0.0 not found.")
#   endif()
#endif()

include_directories(${OpenCV_INCLUDE_DIRS} /usr/local/opencv310/include)
find_package( "/usr/local/opencv310/include/opencv2" )
include_directories(${OpenCV_LIBRARY_DIRS} /usr/local/opencv310/lib)

如果需要卸載OpenCV,執行:

make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

平時的小問題:報錯:[Error] ‘setprecision’ is not a member of ‘std’

解決:需要加上頭文件 便可通過編譯 :

#include <iostream>
#include <iomanip>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章