Ubuntu14.04安装OpenCV3.1.0的Contrib模块

想要使用OpenCV里面SIFT、SURF等检测算法,但听说都被统一集成到一个叫“Contrib”的模块里面了(关键是xFeatures2d.hpp)。于是去官网下载,重新编译覆盖安装了一下。

opencv的安装之前已经写过,这里补充额外模块的安装过程。

1.下载Contrib包源码

官网地址:

https://github.com/opencv/opencv_contrib/releases

查找对应的版本下载即可,注意要与OpenCV的自身版本对应。我使用的是3.1.0。

2.解压

下载完成后,将压缩包里的源码解压到opencv目录的同一路径下。
Ubuntu14.04安装OpenCV3.1.0的Contrib模块_第1张图片

3.编译安装

进入先前编译opencv用的“build”文件夹(上图)。

cd build

执行

sudo cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..

注意后面“EXTRA_MODULES_PATH”选择了额外模块所在的路径。最后两个点(当前路径)不要漏!

继续执行

sudo make

make的过程比较长,半个小时。

最后执行

sudo make install

这样就加入了额外模块对openCV进行了覆盖安装。

编译不报错,并且看到下面的信息,肯定就ok了。
Ubuntu14.04安装OpenCV3.1.0的Contrib模块_第2张图片
库文件都可以在上图显示的路径里找到。

4.测试

就用xfeatures2d来简单测试SIFT算法。代码如下:

SIFTextract.cpp

#include 
#include 
#include 
#include 

using namespace cv;
using namespace std;

int main(int argc,char** argv)
{
	//创建SIFT类指针
	Ptrf2d = xfeatures2d::SIFT::create();
	
	//读入灰度图
	Mat img_1 = imread(argv[1],CV_LOAD_IMAGE_GRAYSCALE);
	
	//检测特征点
	vectorkeypoints_1;
	f2d->detect(img_1,keypoints_1);

	//计算描述子
	Mat descriptors_1;
	f2d->compute(img_1,keypoints_1,descriptors_1);

	//输出显示
	Mat outimg1;
	drawKeypoints(img_1,keypoints_1,outimg1,Scalar::all(-1),DrawMatchesFlags::DEFAULT);
	imshow("SIFT Features",outimg1);
	
	//等待按下按键
	waitkey(0);
	return 0;
}

写个CMakeList来编译代码:

CMakeList.txt

cmake_minimum_required( VERSION 2.8)
project( vo )

set( CMAKE_BUILD_TYPE "Release" )
set( CMAKE_CXX_FLAGS "-std=c++ -o3" )

include_directories(
		${OpenCV_INCLUDE_DIRS}
)

add_exetuable( SIFTextract SIFTextract.cpp )
target_link_libraries( SIFTextract ${OpenCV_LIBS} )

代码、CMakeList、图片放在同一路径下,用Cmake编译:

sudo mkdir build
cd build
sudo cmake ..
sudo make

生成可执行项目。

代码所在路径执行

build/SIFTextract 1.png

结果:

Ubuntu14.04安装OpenCV3.1.0的Contrib模块_第3张图片

你可能感兴趣的:(视觉SLAM学习)