安装时间和安装环境
安装时间
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解决问题的速度比较快。