Ubuntu14.04下opencv3和opencv2共存和使用方法

一、 安裝多版本OpenCV的原因
OpenCV2和OpenCV3是目前主流的兩個版本,有些程序使用OpenCV2,同時有些程序使用了OpenCV3,但是OpenCV2和OpenCV3的API和結構並不完全相同,比如在OpenCV3以後,SIFT和SURF之類的屬性被移到了contrib中了,因此我們需要在一臺計算機上同時安裝並使用多個版本OpenCV。

二、 安裝OpenCV2和OpenCV3
1. 安裝依賴庫
安裝官方要求必選包:

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

安裝官方可選包:

sudo apt-get install  python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

添加對OpenGL的支持所需要的包:

sudo apt-get install freeglut3-dev mesa-common-dev  libgtkglext1 libgtkglext1-dev

安裝視頻處理所需的包

sudo apt-get install checkinstall yasm libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libgtk2.0-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils  ffmpeg

優化opencv的功能包

sudo apt-get install libatlas-base-dev gfortran qt5-default qtcreator

2.下載源代碼
下載OpenCV2.4.13.3源代碼:
git clone https://github.com/opencv/opencv/tree/2.4.13.3

下載OpenCV3.3.0源代碼:
git clone https://github.com/opencv/opencv/tree/3.3.0

下載OpenCV3.3.0_contrib源代碼:
git clone https://github.com/opencv/opencv_contrib/tree/3.3.0

2.安裝OpenCV2和OpenCV3 (無CUDA版本)
安裝OpenCV2.4.13.3
$ cd opencv-2.4.13.3/
$ mkdir build
$ cd  build
$ cmake -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local/opencv2 \
    -DWITH_TBB=ON \
    -DWITH_IPP=ON \
    -DWITH_QT=ON \
    -DWITH_GTK=ON \ 
    -DWITH_V4L=ON \
    -DWITH_LIBV4L=ON \
    -DWITH_OPENGL=ON \
    -DWITH_FFMPEG=ON \
    -DBUILD_EXAMPLES=ON \
    -DINSTALL_PYTHON_EXAMPLES=ON \
    -DINSTALL_C_EXAMPLES=ON \
    -DPYTHON_EXECUTABLE=/usr/bin/python \
    -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 \
    -DPYTHON_INCLUDE_DIR2=/usr/include/x86_64-linux-gnu/python2.7 \
    -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so \
    -DPYTHON_NUMPY_INCLUDE_DIRS=/usr/lib/python2.7/dist-packages/numpy/core/include/  ..
$ make -j $(($(nproc) + 1))
$ sudo make install

安裝OpenCV3.3.0: 
首先將OpenCV3.3.0_contrib-3.3.0放到opencv-3.3.0目錄下,然後執行下面命令。
$ cd opencv-3.3.0/
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local/opencv3 \
    -DOPENCV_EXTRA_MODULES_PATH=/home/bdd/opencv-3.3.0/opencv_contrib-3.3.0/modules \
    -DWITH_TBB=ON \
    -DWITH_QT=ON \
    -DWITH_GTK=ON \ 
    -DWITH_V4L=ON \
    -DWITH_LIBV4L=ON \
    -DWITH_OPENGL=ON \
    -DWITH_FFMPEG=ON \
    -DBUILD_EXAMPLES=ON \
    -DINSTALL_PYTHON_EXAMPLES=ON \
    -DINSTALL_C_EXAMPLES=ON \
    -DPYTHON_EXECUTABLE=/usr/bin/python \
    -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 \
    -DPYTHON_INCLUDE_DIR2=/usr/include/x86_64-linux-gnu/python2.7 \
    -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so \
    -DPYTHON_NUMPY_INCLUDE_DIRS=/usr/lib/python2.7/dist-packages/numpy/core/include/  ..
$ make -j $(($(nproc) + 1))
$ sudo make install

其中OPENCV_EXTRA_MODULES_PATH:指定的OpenCV3.3.0_contrib路徑

3.安裝OpenCV3和OpenCV3 (CUDA版本)
CUDA版的安裝方法與無CUDA版的方法類似,除了安裝CUDA的一些驅動外,只是在cmake後面添加一些關於CUDA的參數。

安裝CUDA8.0,cuDNN,NCCL請參見NVIDIA官方教程:http://www.nvidia.cn/object/caffe-installation-cn.html,該教程不僅簡單,而且穩定,不會出現圖形界面崩潰等各種問題,強力推薦。

當然,如果出現Ubuntu在系統啓動logo過後無法進入桌面的問題可以參考我的另一篇博文:http://blog.csdn.net/u011092188/article/details/58638991

對於CMake中關於CUDA的選項設置,其中要注意的是 CUDA_GENERATION 的設置。如果選擇您GPU內核的型號(Pascal、Maxwell等),那麼就不需要設置CUDA_ARC_BIN和CUDA_ARC_PTX參數,可是這種條件下會導致一些錯誤。推薦的方法是設置 CUDA_GENERATION = Auto,然後到這個網址查看您顯卡的Compute Capability,填到CUDA_ARC_BIN,CUDA_ARC_PTX中。比如的我的顯卡是GTX TITANXP,其對應的Compute Capability爲6.1,那麼應該設置CUDA_ARC_BIN=6.1,CUDA_ARC_PTX=6.1

安裝OpenCV2.4.13.3
$ cd opencv-2.4.13.3/
$ mkdir build
$ cd  build
$ cmake -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local/opencv2 \
    -DWITH_TBB=ON \
    -DWITH_IPP=ON \
    -DWITH_QT=ON \
    -DWITH_GTK=ON \ 
    -DWITH_CUDA=ON \
    -DWITH_CUBLAS=ON \
    -DWITH_CUFFT=ON \
    -DWITH_V4L=ON \
    -DWITH_LIBV4L=ON \
    -DWITH_OPENGL=ON \
    -DWITH_FFMPEG=ON \
    -DBUILD_EXAMPLES=ON \
    -DINSTALL_PYTHON_EXAMPLES=ON \
    -DINSTALL_C_EXAMPLES=ON \
    -DCUDA_GENERATION=Auto \
    -DCUDA_ARCH_BIN=6.1 \
    -DCUDA_ARCH_PTX=6.1 \
    -DPYTHON_EXECUTABLE=/usr/bin/python \
    -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 \
    -DPYTHON_INCLUDE_DIR2=/usr/include/x86_64-linux-gnu/python2.7 \
    -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so \
    -DPYTHON_NUMPY_INCLUDE_DIRS=/usr/lib/python2.7/dist-packages/numpy/core/include/  ..
$ make -j $(($(nproc) + 1))
$ sudo make install

安裝OpenCV3.3.0: 
同樣首先應將OpenCV3.3.0_contrib-3.3.0放到opencv-3.3.0目錄下,然後執行下面命令。
$ cd opencv-3.3.0/
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local/opencv3 \
    -DOPENCV_EXTRA_MODULES_PATH=/home/bdd/opencv-3.3.0/opencv_contrib-3.3.0/modules \
    -DWITH_TBB=ON \
    -DWITH_QT=ON \
    -DWITH_GTK=ON \ 
    -DWITH_CUDA=ON \
    -DWITH_CUBLAS=ON \ 
    -DWITH_CUFFT=ON \
    -DWITH_V4L=ON \
    -DWITH_LIBV4L=ON \
    -DWITH_OPENGL=ON \ 
    -DWITH_FFMPEG=ON \
    -DBUILD_EXAMPLES=ON \
    -DINSTALL_PYTHON_EXAMPLES=ON \
    -DINSTALL_C_EXAMPLES=ON \
    -DCUDA_GENERATION=Auto \
    -DCUDA_ARCH_BIN=6.1 \
    -DCUDA_ARCH_PTX=6.1 \
    -DPYTHON_EXECUTABLE=/usr/bin/python \
    -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 \
    -DPYTHON_INCLUDE_DIR2=/usr/include/x86_64-linux-gnu/python2.7 \
    -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so \
    -DPYTHON_NUMPY_INCLUDE_DIRS=/usr/lib/python2.7/dist-packages/numpy/core/include/  ..
$ make -j $(($(nproc) + 1))
$ sudo make install

三、不同版本切換的方法:
不同版本的OpenCV編譯好後,都會生成一個 OpenCVConfig.cmake,這個文件中指定了對應庫函數和頭文件的位置。在本教程的情況下,OpenCV2對應的OpenCVConfig.cmake在/usr/local/opencv2/share/OpenCV,OpenCV3對應的OpenCVConfig.cmake在/usr/local/opencv3/share/OpenCV。因此,如果要使用那個版本的OpenCV只需要將對應版本OpenCVConfig.cmake的路徑寫入CMakeLists.txt即可。這就是說,當自己所寫的程序使用到OpenCV3時,在 FIND_PACKAGE( OpenCV REQUIRED ) 前,添加set(OpenCV_DIR “/usr/local/opencv3/share/OpenCV”) 這樣計算機就找到OpenCV3的對應頭文件和庫文件了,如果使用OpenCV2,那麼添加set(OpenCV_DIR “/usr/local/opencv2/share/OpenCV”)在FIND_PACKAGE( OpenCV REQUIRED ) 前就好。比如下面是一個使用OpenCV3的例子。

CMAKE_MINIMUM_REQUIRED( VERSION 2.8)
PROJECT(useOpenCV)
set(OpenCV_DIR "/usr/local/opencv3/share/OpenCV") 
FIND_PACKAGE(OpenCV REQUIRED)
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
add_executable(useOpenCV useOpenCV.cpp)
TARGET_LINK_LIBRARIES(useOpenCV ${OpenCV_LIBRARIES})

原文:https://blog.csdn.net/u011092188/article/details/77842002 

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