opencv3+ORB+win10(vs2013)

因为准备学习三维重构的算法,最近开始接触c++的opencv,vs真的不如clion好用,吐槽一下。。。

opencv3出来后有了很多的变换,这里用来记录一下,防止以后踩坑,每次因为版本不兼容报错头都大了

 

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

#include<opencv2\core\core.hpp>
#include<opencv2\features2d\features2d.hpp>
#include<opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;


int main()
{
	//读取图片
	Mat rgbd1 = imread("C:/Users/lenovo/Desktop/1.JPG");
	Mat rgbd2 = imread("C:/Users/lenovo/Desktop/1.JPG");
	
        //这里是和opencv2不同的地方,以前是ORB orb(),现在ORB是虚函数,然后添加了智能指针,可  以自动delete!
	Ptr<ORB> orb = ORB::create(1000); //1000是匹配点个数
	vector<KeyPoint> Keypoints1, Keypoints2;
	Mat descriptors1, descriptors2;
//这里detect和compute合并为了一个函数
	orb->detectAndCompute(rgbd1, Mat(), Keypoints1, descriptors1);
	orb->detectAndCompute(rgbd2, Mat(), Keypoints2, descriptors2);


	//可视化,显示关键点
	Mat ShowKeypoints1, ShowKeypoints2;
	drawKeypoints(rgbd1, Keypoints1, ShowKeypoints1);
	drawKeypoints(rgbd2, Keypoints2, ShowKeypoints2);
	namedWindow("Keypoints1", WINDOW_NORMAL);
	namedWindow("Keypoints2", WINDOW_NORMAL);
	imshow("Keypoints1", ShowKeypoints1);
	imshow("Keypoints2", ShowKeypoints2);
	waitKey(0);

	//Matching
	vector<DMatch> matches;
	Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create("BruteForce");
	matcher->match(descriptors1, descriptors2, matches);
	cout << "find out total " << matches.size() << " matches" << endl;

	//可视化
	Mat ShowMatches;
	drawMatches(rgbd1, Keypoints1, rgbd2, Keypoints2, matches, ShowMatches);
	namedWindow("matches", WINDOW_NORMAL);
	imshow("matches", ShowMatches);
	waitKey(0);


	return 0;
}

上面是代码,注意imread后面是绝对路径,不要想着放在一个工程里就行,下面是效果啦

 

 

物体很多的时候效果一般,很多错误

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值