近两个月来接触了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文件中添加
Java:我说使用的是IDEA,将opencv/build/lib目录设置在IDEA设置位jvm的运行空间即可。
最后的最后,老样子,代码没有啦,大家可以看一下opencv自带的例子,或者转到www.baidu.com或者github.com。