近兩個月來接觸了Linux系統,在老闆的建議下翻了Ubuntu的牌子,我安裝的版本是16.04,用習慣以後感受蠻好的,比Windows要強。好啦,廢話不說啦,下面開始說在Ubuntu中安裝OpemCV+OpenCV_Contrib。java
首先,準備一下開發環境:python
- Ubuntu 16.04 64位
- cmake
- ant
- jdk
- git
- python
接下來,從github中down下OPenCV + OpenCV_Contrib庫,能夠從https://github.com/opencv上下載(注意版本對應),也能夠經過指令下載(建議使用):git
git clone https://github.com/Itseez/opencv.git git clone https://github.com/Itseez/opencv_contrib.git
這個過程須要等待一段時間,具體依賴與你的網速啦,下載成功後,能夠在你的home目錄下看見opencv和opencv_contrib兩個文件夾,將opencv_contrib目錄移到opencv目錄下。github
在下載的過程當中,咱們能夠添加opencv所須要的依賴庫:jvm
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目錄:post
mkdir build
像這樣:ui
進入build目錄,開始編譯,執行(注意後面的兩個點不能少):spa
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..
編譯結果爲:3d
接下來,執行:code
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文件中添加
1234567
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/博客在我探索過程當中給我帶來的幫助。