VS2019+OpenCV3.4.6+contrib3.4.6配置

0前言

最近在学习一些特征提取及匹配的东西,需要用到SIFT特征匹配,但由于OpenCV3中将OpenCV2中的SIFT部分移到了OpenCV_contrib中了,所以需要配置OpenCV3+contrib。本文使用的是OpenCV3.4.6+contrib3.4.6(注:OpenCV和contrib版本必须一致)。

配置OpenCV3.4.6+contrib3.4.6需要使用cmake进行编译,之后再进行环境变量和属性的配置,但过程较为繁琐,需要较长时间,有兴趣的朋友可以参考此 链接配置。

本文使用的是已经使用cmake编译好的OpenCV3.4.6+contrib3.4.6直接进行配置,点击以下链接获取。
链接:https://pan.baidu.com/s/1-O8Uu-uuMy2oIjmJnPOxjw
提取码:4lhu

1.下载完成后,解压

2.设置环境变量

将D:\Program Files (x86)\opencv-3.4.6\opencv-3.4.6\x64\vc16\bin添加到环境变量。
我的电脑->属性->高级属性->环境变量->Path->新建
VS2019+OpenCV3.4.6+contrib3.4.6配置_第1张图片

3.打开VS2017,新建一个空项目,然后新建一个空的C++文件

3.1首先新建一个空项目

文件->新建->项目->空项目,选择名称和路径后,点击确定。

3.2在源文件中添加C++文件

右键源文件->添加->新建项->C++文件->添加。

4.配置属性

4.1 打开属性管理器:视图->其他窗口->属性管理器

VS2019+OpenCV3.4.6+contrib3.4.6配置_第2张图片

4.2 打开属性窗口:右键Debug|x64->属性

VS2019+OpenCV3.4.6+contrib3.4.6配置_第3张图片
VS2019+OpenCV3.4.6+contrib3.4.6配置_第4张图片

4.3 为工程配置包含目录:

把OpenCV的include目录:…\opencv-3.4.6\include ,增加到VC++的包含目录属性列表
VS2019+OpenCV3.4.6+contrib3.4.6配置_第5张图片

4.4 为工程配置库目录:

将OpenCV的.lib目录:…\opencv-3.4.6\x64\vc16\lib,添加到VC++目录的库目录中
VS2019+OpenCV3.4.6+contrib3.4.6配置_第6张图片

4.5 为工程配置附加链接库:添加openCV的附加依赖库到链接器->输入->附加依赖项.

Debug X64 的附加依赖项为:opencv_world346d.lib
VS2019+OpenCV3.4.6+contrib3.4.6配置_第7张图片

4.6 Ctrl+S保存

5. 测试程序


#include <iostream>
#include <opencv2/opencv.hpp>  
#include <opencv2/xfeatures2d.hpp>

using namespace cv;
using namespace std;

void main()
{
	Ptr<Feature2D> f2d = xfeatures2d::SIFT::create();

	//Mat img = cv::imread("F://1.png");    //注意这里的//的方向,一开始写反了,怎么都出不来。
	Mat img_1 = imread("left.jpg");
	Mat img_2 = imread("right.jpg");
	//Detect the keypoints
	vector<KeyPoint> keypoints_1, keypoints_2;
	f2d->detect(img_1, keypoints_1);
	f2d->detect(img_2, keypoints_2);
	//Calculate descriptors (feature vectors)
	Mat descriptors_1, descriptors_2;
	f2d->compute(img_1, keypoints_1, descriptors_1);
	f2d->compute(img_2, keypoints_2, descriptors_2);
	//Matching descriptor vector using BFMatcher
	BFMatcher matcher;
	vector<DMatch> matches;
	matcher.match(descriptors_1, descriptors_2, matches);
	//绘制匹配出的关键点
	Mat img_matches;
	drawMatches(img_1, keypoints_1, img_2, keypoints_2, matches, img_matches);
	imshow("【match图】", img_matches);
	//等待任意按键按下
	waitKey(0);
}

左图
VS2019+OpenCV3.4.6+contrib3.4.6配置_第8张图片
右图
VS2019+OpenCV3.4.6+contrib3.4.6配置_第9张图片

6.参考

本文参考以下链接;
1.VS2017+OpenCV3.4.1+opencv_contrib3.4.1配置(体验跟踪算法)
2.vs2019+opencv3.4.6+contrib3.4.6源码编译

你可能感兴趣的:(OpenCV,c++,opencv,cmake)