OpenCV - Linux(Ubuntu 16.04)中安裝OpenCV + OpenCV_Contrib


  近兩個月來接觸了Linux系統,在老板的建議下翻了Ubuntu的牌子,我安裝的版本是16.04,用習慣之后感覺蠻好的,比Windows要強。好啦,廢話不說啦,下面開始說在Ubuntu中安裝OpemCV+OpenCV_Contrib。

  首先,准備一下開發環境:

  • Ubuntu 16.04 64位
  • cmake
  • ant
  • jdk
  • git
  • python

  接下來,從github中down下OPenCV + OpenCV_Contrib庫,可以從https://github.com/opencv上下載(注意版本對應),也可以通過指令下載(建議使用):

git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git

  這個過程需要等待一段時間,具體依賴與你的網速啦,下載成功后,可以在你的home目錄下看見opencv和opencv_contrib兩個文件夾,將opencv_contrib目錄移到opencv目錄下。

  在下載的過程中,我們可以添加opencv所需要的依賴庫:

sudo apt-get install build-essential
sudo apt-get install 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

  以上步驟完成后,我們進入opencv目錄,創建build目錄:

mkdir build

 

  像這樣:

    

  進入build目錄,開始編譯,執行(注意后面的兩個點不能少):

cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..

  編譯結果為:

    

  接下來,執行:

make -j8

  得到的結果為:

    

  到了這個時候,如果僅僅只需要在python或者C中使用OpenCV,就可以直接執行下一步了,如果需要在java中使用OpenCV,需要修改一些源文件。編輯features2d_manual.hpp文件,目錄文件在/modules/features2d/misc/java/src/cpp中。

  具體修改:

  • 在第8行,在#include "features2d_converters.hpp"添加#include "opencv2/xfeatures2d.hpp"
  • 在第121行,將
    //case SIFT:
    //    name = name + "SIFT";
    //    break;
    //case SURF:
    //    name = name + "SURF";
    //    break;

     改為

    //case SIFT:
    //    fd=xfeatures2d::SIFT::create();
    //    break;
    //case SURF:
    //    fd=xfeatures2d::SURF::create();
    //    break;
  • 在第248行,將
    //case SIFT:
    //    name = name + "SIFT";
    //    break;
    //case SURF:
    //    name = name + "SURF";
    //    break;

     改為

    case SIFT:
        de = xfeatures2d::SIFT::create();
        break;
    case SURF:
        de = xfeatures2d::SURF::create();
        break;
  • 在第257行,將
    //case BRIEF:
    //    name = name + "BRIEF";
    //    break;

     改為

    case BRIEF:
        de = xfeatures2d::BriefDescriptorExtractor::create();
        break;
  • 在第263行,將
    //case FREAK:
    //    name = name + "FREAK";
    //    break;

     改為

    case FREAK:
        de = xfeatures2d::FREAK::create();
        break

   修改完畢。

  接下來,執行:

sudo make install

  編譯結果為:

    

  這樣,我們就可以在Ubuntu中使用OPencv了,適用於各種語言。

  我們可以在/usr/local/lib下看見opencv編譯的結果:

    

  

  最后,簡單說一下在各個語言下的使用:

  • python:直接導入cv2的庫就可以啦
    import cv2

     這里面編譯的時候要注意python2和python3的區別,python2編譯的opencv在python3中是不可以使用的

  • C++:我使用的是QT,在pro文件中添加
    INCLUDEPATH += \
            /usr/local/include \
            /usr/local/include/opencv \
            /usr/local/include/opencv2 \
    
    LIBS += \
        /home/fanxuan/opencv/build/lib/libopencv_java331.so \  
  • Java:我說使用的是IDEA,將opencv/build/lib目錄設置在IDEA設置位jvm的運行空間即可。

 

  最后的最后,老樣子,代碼沒有啦,大家可以看一下opencv自帶的例子,或者轉到www.baidu.com或者github.com

 

  感謝外國友人https://elbauldelprogramador.com/en/how-to-compile-opencv3-nonfree-part-from-source/博客在我探索過程中給我帶來的幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM