安裝時間和安裝環境
安裝時間
2017.5.8-2017.5.9
安裝環境
fedora24系統
安裝原因
dnf install opencv*
上述命令可以直接安裝opencv-python的,當使用大部分的函數沒有什么問題。但是當使用cv2.SIFT()的時候產生了問題,經過詳細的看資料(http://www.pyimagesearch.com/2015/07/16/where-did-sift-and-surf-go-in-opencv-3/),我發現好像不得不源碼安裝。
在源碼安裝之后,sift特征還是不能使用,再次仔細閱讀該網站,發現還有一個opencv_contrib模塊需要安裝,於是查找資料,之后可以使用sift特征函數,此時的使用方法變為cv2.xfeatures2d.SIFT_create()。
安裝步驟
1、預先環境的配置。
dnf install cmake
dnf install python-devel numpy
dnf install gcc gcc-c++
dnf install gtk2-devel
dnf install libdc1394-devel
dnf install libv4l-devel
dnf install ffmpeg-devel
dnf install gstreamer-plugins-base-devel
dnf install libpng-devel
dnf install libjpeg-turbol-devel
dnf install jasper-devel
dnf install openexr-devel
dnf install libtiff-devel
dnf install libwebp-devel
dnf install tbb-devel
dnf install eigen3-devel
dnf install python-sphinx
dnf install texlive
2、源碼的下載及編譯
參考資料:
官方參考:
opencv_contrib的安裝:https://github.com/opencv/opencv_contrib
私人安裝:http://coderlin.coding.me/2016/03/02/Install-OpenCV-3-1-0-in-Ubuntu-14-04-13-10/
源碼的網址:https://github.com/opencv/opencv(曾用網址:https://github.com/Itseez/opencv/)
https://github.com/opencv/opencv__contrib(曾用網址:https://github.com/Itseez/opencv_contrib)
在安裝時注意:opencv_contric和opencv的版本一致,但貌似都是從官網下載,好像都是最新版。
git clone 網址
cd /opencv // /opencv為opencv的文件夾
mkdir build
cd build
//我的編譯選項
cmake -D CMAKE_BUILED_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_EIGEN=ON -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF ..
//將opencv_contrib編譯進去opencv源碼
cmake -D OPENCV_EXTRA_MODULES_PATH=/home/glen-z/Downloads/opencv_contrib/modules -DBUILD_opencv_dnn=OFF /home/glen-z/Downloads/opencv
//-DBUILD_opencv_dnn=OFF 加這一段代碼時不要將該模塊編譯進去,是有一個新的問題出現,沒有辦法排除,只能這樣處理
//該問題並未被記錄,很遺憾,但是在編譯時好像會看到總在編譯dnn相關代碼出錯。
cmake -D ENABLE_PRECOMPILED_HEADERS=OFF .. //這個解決的問題下面解釋
make -j4 //用4個線程跑程序
make install
3、遇到的問題及解決思路
(1)、undefined reference to `jpeg_default_qtables’
//http://imagemagick.org/download/delegates/ 下載jpegsrc.v9a.tar.gz
tar -xzvf jpegsrc.v9a.tar.gz
cd jpeg-9a
./configure
make libdir=/usr/lib64
make libdir=/usr/lib64 install
//我的問題通過該方法得到解決。
(2)、stdlib.h: Nosuch file or directory
cmake -D ENABLE_PRECOMPILED_HEADERS=OFF .. //我的問題這樣解決了,另外-D和Enable之間的空格似乎可有可有無,操 //作兩個都沒錯,我也有點迷糊
(3)、好不容易編譯完了,忘了make install
4、學到的知識點
多看Stack Overflow解決問題的速度比較快。