一、写在前面
1、主要参考的是以下的博文:http://www.cnblogs.com/asmer-stone/p/5089764.html 但是在配置过程中发现有几个地方容易出错,因此这里重新整理以下
2、因为要使用sift算子,所以opencv_contrib中编译出错的几个模块被直接删除文件夹后又重新编译的
二、步骤(1-4步都与参考博文中同)
1、依赖关系
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
2、下载源码
a.可以从opencv官网直接下载:http://opencv.org/downloads.html
b.也可以从github上clone:
cd ~/<my_working_directory> //比如工作目录为opencv即,cd ~/opencv
git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git
opencv与opencv_contrib可以不在统一目录下
3、CMake Opencv源码:
建立一个编译目录(例如:/build)把cmake后的文件都放在这里边。
然后开始cmake,这里需要注意几个cmake的参数,比较重要。
cmake -D CMAKE_BUILD_TYPE=Release/Debug -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib/modules/> ..
注:命令中最后的" .. "(空格+两个点)千万不要忘记
4、把代码编译成可执行文件
make -j4 # 4线程,这一步也在build目录中进行
sudo make install
至此,在/usr/local/include下应该出现opencv和opencv2两个文件夹,其中opencv2里面有line_descriptor、xfeatures2d等从opencv_contrib中得到的文件夹。
5、到此,要直接在cmakelists或者makefile中使用opencv,有两种方式:
方法1: 添加opencv到环境变量,具体参考http://lib.csdn.net/article/opencv/32587。此方法没试过,也不推荐,因为担心删除opencv的时候会出麻烦。这里备注以下安装出问题之后opencv的删除方法:
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
然后再删除刚才新建的编译目录build即可
方法2: 在cmakelists中手动设置OpenCV_DIR
# OpenCV
set(OpenCV_DIR "/home/xxx/Documents/Installers/opencv/opencv/build")
FIND_PACKAGE(OpenCV REQUIRED)
个人推荐第二种方法,这样的安装比较“干净”,删除也方便。