opencv3将opencv2单一的库分成了两个部分:成熟的Opencv库以及opencv-contrib库,成熟的库相较容易安装可以查看本人上一篇博客,这篇博客主要介绍opencv-contrib库的安装,我这里安装的64位的。
(1)首先下载opencv-contrib并与opencv放在同一个目录并且解压,然后我们创建一个在opencv同一个目录创建一个新的文件夹我取得名字叫myopencv用于存放编译的文件:这里我推荐一个github相关contib库的网址:
https://github.com/opencv/opencv_contrib/releases
根据自己的版本下载对应的版本的opencv-contrib库,我使用的是3.4.0。
(2)从网上下载cmke编译器,这里我推荐一个网址:https://cmake.org/download/
(3)在下载cmke目录下找到bin目录下的cmake-gui并且以管理员身份运行(这里是确保能够有足够的权限访问特殊的文件),此时有两个框,上面一个框输入的是opencv目录(在本博客中,opencv目录指的是我们已经成功安装的那个opencv的目录,跟contrib库无关)下的sources目录也就是需要编译的目录,线面一个文本框输入的是编译文件存放的目录,也就是第一步创建的目录。
(4)选中如图所示的,点击configure按钮,此时会让我们选择编译工具以及位数,这里注意这个32位和64为最好要之前成功配置的opencv的位数一致,我的是Visual visual studio 14 2015,然后确认,然后点击finish按钮,等待configure done。
(5)在图中找到OPENCV_EXTRA_MODULES_PATH在右侧编辑输入已经解压好的contrib库目录下面的modules文件路径,并且将在上面窗口中找到WITH_CUDA将右侧的勾去掉,然后再次点击configure,等待窗口出现configure done。
(6)点击generate,等待出现generate done.
(7)在vs中打开项目解决方案,路径就是第一步创建的myopencv目录之下有一个Opencv.sln,文件选中并且确认,导入该解决方案。
(8)选中该解决方案鼠标右键--》重新生成解决方案,在重新生成解决方案成功之后我们在该解决方案下面找到CMake Targets目录下的install文件,然后鼠标右键--》仅用于项目-》仅重新生成等待操作成功。
(9)接下来我们需要配置环境变量,新增一个系统变量,变量名字为OPENCV值为#myopencv/install。
然后在用户变量path新增一个值#myopencv/install/x64/vc14/bin。
(10)打开vs2015,新建一个工程并在属性管理器下面找到Debug|x64 cpp.x64.user鼠标右键--》属性--》vc++目录--》包含目录里面增加#myopencv/install/include,#myopencv/install/include/opencv,#myopencv/install/include/opencv2三条记录
(11)在vc++目录--》库目录里面增加myopencv\install\x64\vc14\lib记录
(12)在连接器--》输入--》附加依赖项添加记录(#\myopencv\install\x86\vc14\lib文件夹里面的lib文件)
最后用于测试的代码:
#include "stdafx.h"
#include "opencv2/opencv.hpp"
#include
#include
using namespace std;
using namespace cv;
void main()
{
Mat srcImg1 = imread("C://Users//JoeKing//Documents//Visual Studio 2015//Projects//feature_mapping//feature_mapping//images//img1.jpg");
Mat srcImg2 = imread("C://Users//JoeKing//Documents//Visual Studio 2015//Projects//feature_mapping//feature_mapping//images//img2.jpg");
vector
Ptr
//detect Keypoints
f2d->detect(srcImg1,keypoints_1);
f2d->detect(srcImg2, keypoints_2);
// caculate descriptors
Mat descriptors1, descriptors2;
f2d->compute(srcImg1,keypoints_1,descriptors1);
f2d->compute(srcImg2, keypoints_2, descriptors2);
//Matching descriptors
BFMatcher matcher;
vector
matcher.match(descriptors1, descriptors2, matches);
//绘制图
Mat img_matches;
drawMatches(srcImg1, keypoints_1, srcImg2, keypoints_2, matches, img_matches);
imshow("【特征点匹配图", img_matches);
waitKey(0);
}
在这段程序中需要修改的是图片的位置,换成测试对应的图片位置,如果程序能够正常运行,则表示opecv_contrib库已经安装配置成功。