FlannBasedMatcher 特征点快速匹配出错

最近在做一个水岸线检测的程序,根据原图以及翻转图的特征点匹配并通过公式计算水岸线位置。
但在做特征点匹配时一直出错,出错如下图,有没有大佬提供一下解决方法?
图片说明

0

4个回答

实在运行不起来,之前的ptr列表都没有,很多变量也没做声明,您这么问还是另请高明,我是解决不了

0

跑一下这段代码试试

#include "highgui/highgui.hpp"

#include "opencv2/nonfree/nonfree.hpp"

#include "opencv2/legacy/legacy.hpp"

#include

using namespace cv;
using namespace std;

int main()
{
Mat image01 = imread("1.jpg", 1);

Mat image02 = imread("2.jpg", 1);

namedWindow("p2", 0);
namedWindow("p1", 0);
imshow("p2", image01);
imshow("p1", image02);

//灰度图转换  
Mat image1, image2;
cvtColor(image01, image1, CV_RGB2GRAY);
cvtColor(image02, image2, CV_RGB2GRAY);


//提取特征点    
SiftFeatureDetector siftDetector(2000);  // 海塞矩阵阈值,在这里调整精度,值越大点越少,越精准 
vector<KeyPoint> keyPoint1, keyPoint2;
siftDetector.detect(image1, keyPoint1);
siftDetector.detect(image2, keyPoint2);

//特征点描述,为下边的特征点匹配做准备    
SiftDescriptorExtractor SiftDescriptor;
Mat imageDesc1, imageDesc2;
SiftDescriptor.compute(image1, keyPoint1, imageDesc1);
SiftDescriptor.compute(image2, keyPoint2, imageDesc2);

//获得匹配特征点,并提取最优配对     
FlannBasedMatcher matcher;
vector<DMatch> matchePoints;

matcher.match(imageDesc1, imageDesc2, matchePoints, Mat());
cout << "total match points: " << matchePoints.size() << endl;


Mat img_match;
drawMatches(image01, keyPoint1, image02, keyPoint2, matchePoints, img_match);

imshow("match",img_match);
imwrite("match.jpg", img_match);

waitKey();
return 0;

}

0
yhp880706
yhp880706 我用的是纯的opencv3.4..不带扩展库,因此用不了被移除的sift,surf特征点算法,只能使用akaze算法,另楼下给出了这部分的完整代码..
大约一年之前 回复
phenix2009
白色一大坨 你代码不全,我没法调试,只能给你一段我认为没问题的,如果需要,你可以把那段出问题的代码发给我看看
大约一年之前 回复

代码我带过来了...
Mat LRGBR;
cvtColor(rectifyImageL, LRGBR, CV_GRAY2BGR);
Mat LDesc,LFDesc;
flip(LRGBI, LF, 0);
Ptr akaze = AKAZE::create();
vector keyPoint1, keyPoint2;
akaze->detectAndCompute(LRGBI, noArray(), keyPoint1, LDesc);
akaze->detectAndCompute(LF, noArray(), keyPoint2, LFDesc);
FlannBasedMatcher matcher;
vector FlannMatches;
Ptr FlannMatcher = FlannBasedMatcher::create();
FlannMatcher->match(LDesc, LFDesc, FlannMatches);
cout << "total match points: " << FlannMatches.size() << endl;
Mat img_match;
drawMatches(LRGBI, keyPoint1, LF, keyPoint2, FlannMatches, img_match);
namedWindow("match", 0);
imshow("match", img_match);
imwrite("match.jpg", img_match);
waitKey();
顺带一提..我要用的是纯opencv...就是不加附加库的...因为是3.4版本的,所以只有akaze算法能用...surf,sift之类的无法使用..请问能调试出来吗

0

好吧,不用了。。我找到另一种算法解决问题了。。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
surf特征+FLANN特征匹配+knn筛选匹配点+单应性矩阵映射
surf特征+FLANN特征匹配+knn筛选匹配点+单应性矩阵映射 #include "stdafx.h" #include #include #include #include "opencv2/nonfree/features2d.hpp" #include #include using namespace cv; using namespace std; int main( )
FLANN和SURF搭配动态匹配特征点
FLANN和SURF搭配匹配特征点
FLANN特征匹配(Python)
输入图片 算法输出图 可以看到,这里的算法效果比之前的ORB算法要好很多了! 可以点击来访问一下,就知道差别了~ ORB特征匹配(python) 代码 import cv2 from matplotlib import pyplot as plt queryImage = cv2.imread('6.jpg', 0) trainingImage = cv2.imread...
特征匹配及其优化
本文转载http://www.cnblogs.com/wangguchangqing/p/4333873.html在OpenCV2简单的特征匹配中对使用OpenCV2进行特征匹配的步骤做了一个简单的介绍,其匹配出的结果是非常粗糙的,在这篇文章中对使用OpenCV2进行匹配的细化做一个简单的总结。主要包括以下几个内容: DescriptorMatcher DMatcher KNN匹配
Opencv学习笔记(三)———特征点匹配
在我们提取到带特征点和得到特征描述符后,接下来的工作就是将这些个特征点进行匹配。一、特征点匹配位于feature2D的模块中所以在使用的时候应该在头文件中加入:#include<opencv2\features2d\features2d.hpp>在这个模块中用有三个类: 它们的继承关系如下: 对于特征点匹配有两种方法:(1) Brute-force matcher (cv::BFMatcher)
FLANN进行特征点匹配
#include #include #include "opencv2/core/core.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/highgui/highgui.hpp" #include #include using namespace cv; void readme(); /**
(四)OpenCV中的特征检测之特征匹配
注释:本文翻译自OpenCV3.0.0 document-&amp;gt;OpenCV-Python Tutorials,包括对原文档种错误代码的纠正1.概述我们知道很多关于特征检测器和描述符。 现在是学习如何匹配不同描述符的时候了。 OpenCV提供了两种技术,Brute-Force匹配器和基于FLANN的匹配器。2.目标我们将看到如何将一副图像中的特征与其它图像特征匹配我们将在OpenCV中使用Bru...
学习OpenCV——Surf(特征点篇)&flann快速最近邻搜索算法
Surf(Speed Up Robust Feature) Surf算法的原理                                                                            1.构建Hessian矩阵构造高斯金字塔尺度空间 其实surf构造的金字塔图像与sift有很大不同,就是因为这些不同才加快了其检测的速度。S
opencv3中FLANN结合SURF进行关键点的描述和匹配
#include #include #include using namespace cv; using namespace std; int main() { Mat srcImage = imread("NIBook.jpg"); imshow("【原图】", srcImage); //对BGR空间的图像直接进行计算很费时间,所以,需要转换为灰度图 Mat srcGrayImag
特征点匹配
Mastering OpenCV with Practical Computer Vision Projects 中的第三章里面讲到了几种特征点匹配的优化方式 1. OpenCV提供了两种Matching方式: • Brute-force matcher (cv::BFMatcher)  • Flann-based matcher (cv::F
OpenCv-C++-平面对象识别(接FLANN特征匹配)
本文接着上篇FLANN特征匹配,从上篇可以知道,如果特征匹配时全部是用线进行匹配,那么真的让人看着很窝心。那么,可不可以把匹配到的结果用矩形或圆表示出来呢?当然可以,这就是平面对象识别。是上一章节的更进一步。这里主要用到两个新的API: 1、findHomography() ------&amp;amp;gt;发现两个平面的透视变幻,生成透视变换矩阵 2、perspectiveTransform() -----...
sift匹配mfc程序
sift匹配mfc程序,实现快速特征点匹配
OpenCV学习笔记-FLANN匹配器
FLANN是快速最近邻搜索包(Fast_Library_for_Approximate_Nearest_Neighbors)的简称。它是一个对大数据集和高维特征进行最近邻搜索的算法的集合,而且这些算法都已经被优化过了。在面对大数据集是它的效果要好于BFMatcher。使用FLANN匹配,我们需要传入两个字典作为参数。这两个用来确定要使用的算法和其他相关参数等。第一个是indexParams。配置我...
opencv特征点匹配算法汇总
对opencv特征点提取匹配的整理,包括SURF/SIFT/ORB/FAST/HARRIS
图像配准,特征点提取与匹配
图像配准 本文为原创文章,转载请注明出处** 目录 一、图像配准概述 二、图像匹配算法 SIFT SURF ORB 暴力匹配 FLANN 深度学习(superpoint) 三、各算法对比 四、图像配准在SLAM中的应用 图像配准概述 匹配:指寻找两幅影像中相似的部分(基于特征点或灰度等),从而找到与搜索图像相似的图像 配准:将不同时间、不同传感器(成像设备)或不同条件下(天候、照度、摄像位置和角度...
PCL快速点特征直方图配准算法
已知点云P中有n个点,那么它的点特征直方图(PFH)的理论计算复杂度是O(nk^2) , 其中k是点云P中每个点p计算特征向量时考虑的邻域数量。对于实际应用中,密集点云的点特征直方图(PFH)的计算,是十分耗时的。本博文介绍一种快速快速点特征直方图FPFH(Fast Point Feature Histograms)算法。FPFH把算法的计算复杂度降低到了O(nk) ,但是任然保留了PFH大部分的...
Flann特征点匹配简述(Lowe's algorithm)
/***好记性不如烂笔头,记下来便于以后复习***/              特征匹配的结果会得到两个特征集合的对应关系列表。第一组特征集被称为训练集(train),第二组被称为查询集(query)。Flann 在调用匹配函数之前,为了提高匹配速度,训练一个匹配器。训练阶段是为了优化cv::FlannBasedMatcher的性能。train类将会建立特征集的索引树。将 query image...
ORB/BRISK/AKAZE特征点提取、特征匹配的性能比较
特征点的提取与特征匹配的概述 特征点提取,输入一幅图片,提取出能代表这幅图片特征的一些点 这些点根据不同提特征的算法,具有一些性质 特征提取通常分为两步: 检测特征点 keypoints 计算描述子 descriptors 特征匹配: 通过计算的描述子,运用一定的度量方式,对描述子进行匹配,输出匹配成功的特征点对 maches ...
FLANN特征点匹配问题
使用FLANN进行特征点匹配: 使用FlannBasedMatcher接口以及函数FLANN()函数实现快速高效的匹配(快速最近邻逼近搜索函数库)FLANN FlannBasedMatcher类也是继承自DescriptorMatcher,并且也是match方法进行匹配, 找到最佳的匹配方法:DescriptorMatch::match方法match函数从每个描述符中查询集中找到最佳匹配,C++ ...
快速的surf特征点匹配
详细的surf特征点匹配,速度快于sift,用C和matlab混合编程,速度快于一般的surf算法。
特征点匹配——ORB算法介绍
《ORB: an efficient alternative to SIFT or SURF》是Rublee等人在2011年的ICCV上发表的一篇有关于特征点提取和匹配的论文,这篇论文介绍的方法跳出了SIFT和SURF算法的专利框架,同时以极快的运行速度赢得了众多青睐。下面我简单介绍一下ORB算法的流程。ORB算法的主要贡献如下: (1)为FAST算法提取的特征点加上了一个特征点方向; (2)使
Surf算法特征点检测与匹配
Speeded Up Robust Features(SURF,加速稳健特征),是一种稳健的局部特征点检测和描述算法。最初由Herbert Bay发表在2006年的欧洲计算机视觉国际会议(Europen Conference on Computer Vision,ECCV)上,并在2008年正式发表在Computer Vision and Image Understanding期刊上。 Surf
opencv KNN匹配等方法的解释
问题描述 在学习opencv的KNN匹配时,想查找KNN匹配的机制是什么,但是搜到的都是机器学习里面的分类KNN算法,感觉不是同一个东西,所以感到奇怪。 问题解决 看到一个帖子解释得很好,mark一下。 特征点匹配 ...
kd树理解——特征匹配、机器学习
kd树个人理解--基础、通俗!
视觉里程计1(slam十四讲ch7)——特征点,特征匹配
Brook_icv 转载于 https://www.cnblogs.com/wangguchangqing/p/8076061.html  slamcn.org:高翔和他的朋友们做的一个系统介绍slam的网站 大牛讲堂|SLAM最终话:视觉里程计 1.概念:什么是里程计?   在里程计问题中,我们希望测量一个运动物体的轨迹。这可以通过许多不同的手段来实现。例如,我们在汽车轮胎上安装计数...
特征匹配和单应性
使用 OpenCV 中的蛮力(Brute-Force)匹配和 FLANN 匹配。 1:Brute-Force 匹配的基础 蛮力匹配器是很简单的。首先在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行(描述符)距离测试,最后返回距离最近的关键点。 对于 BF 匹配器,我们首先要使用 cv2.BFMatcher() 创建一个 BF-Matcher 对象。它有两个可选参数。第一个是 n
Sift特征点匹配过程
由步骤一我们已经获得了图片的特征点向量集合。现在来看看特征点匹配,特征点匹配的一个应用就是物体的识别,比如说我有2张图片A和B,图片的内容相同,只是图片的大小尺寸不同。假设A图片尺寸比较大,且我们已经采用sift算法对图片A和B都进行了检测,获得了它们的特征点集合,现在我们的问题是需要把A和B中相应的特征点给对应连线起来。   既然是匹配,当然每个特征点向量要相似才能匹配到一起,这里采用的是
opencv 特征点提取、匹配(二)
opencv 特征点提取、匹配(二) demo: http://download.csdn.net/detail/keen_zuxwang/9852587 RANSAC是“RANdom SAmple Consensus随机抽样一致”的缩写。 它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。 它是一种不确定的算法——它有一定的概率得出一个合理的结果,为了提高概率必须提高迭代
SIFT特征点寻找、定位及筛选
目录: 1、找寻 2、定位 3、优化 1 KEYPOINT找寻   极值的检测是在DoG空间进行的,检测是以前点为中心,3pixel*3pixel*3pixel的立方体为邻域,判断当前点是否为局部最大或最小。如下图所示,橘黄色为当前检测点,绿色点为其邻域。因为要比较当前点的上下层图像,所以极值检测从DoG每层的第2幅图像开始,终止于每层的倒数第2幅图像(第1幅没有
VSLAM基础(一)————常见特征点提取算法及匹配优化
过年期间闲来无事,就想来把这半年学习的一些视觉知识(视觉slam相关)做个梳理,就以这篇图像特征点提取与匹配作为开头吧。 一、关键点与描述子 关键点:图像上某些特殊的、具有代表的点(常见表示就是图像上的横纵坐标、主方向、尺度等)。 描述子:用一些数学方法描述关键点(常见表示是n维向量)。 1)harris角点检测 角点原理来源于人对角点的感性判断,即图像在各个方向灰度有明显变化。算法的核...
特征点匹配——FAST特征点检测
FAST算法是ECCV 2006上发表的Machine learning for high-speed corner detection上提出的,从论文名字中就可以看出,这是一种检测特征点的方法。一、原始检测方法具体内容如下: 判别特征点pp是否是一个特征点,可以通过判断以该点为中心画圆,该圆过16个像素点。设在圆周上的16个像素点中是否最少有nn个连续的像素点满足都比Ip+tI_p+t大,或者都
opencv3中SIFT配合暴力匹配进行关键点描述和提取
#include #include #include using namespace cv; using namespace std; int main() { Mat srcImage = imread("mofang1.jpg"); imshow("【原图】", srcImage); //对BGR空间的图像直接进行计算很费时间,所以,需要转换为灰度图 Mat srcGrayIma
特征匹配之Brute-Force 匹配和FLANN 匹配器
使用 OpenCV 中的蛮力(Brute-Force)匹配和 FLANN 匹配。 1:Brute-Force 匹配的基础 蛮力匹配器是很简单的。首先在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行(描述符)距离测试,最后返回距离最近的关键点。 对于 BF 匹配器,我们首先要使用 cv2.BFMatcher() 创建一个 BF-Matcher 对象。它有两个可选参数。第一个是 norm
ORB特征提取与匹配
特征点的检测图像的特征点可以简单的理解为图像中比较显著显著的点,如轮廓点,较暗区域中的亮点,较亮区域中的暗点等。ORB采用FAST(features from accelerated segment test)算法来检测特征点。这个定义基于特征点周围的图像灰度值,检测候选特征点周围一圈的像素值,如果候选点周围领域内有足够多的像素点与该候选点的灰度值差别够大,则认为该候选点为一个特征点。其中I(x)...
Opencv 各种特征点提取和匹配
opencv 特征点的提取和匹配
RANSAC 特征匹配算法解析
一、RANSAC特征匹配算法简介   RANSAC算法是RANdom SAmple Consensus的缩写,意为随机抽样一致。表面上的意思就是从匹配样本中随机取样,寻找一致的样本点。RANSAC算法是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数,得到有效样本数据的算法。它是在1981年由Fischler和Bolles最先提出。   在利用已有算法进行特征点匹配时,常存在的一个问题
特征点匹配——FREAK算法介绍
FREAK算法是ICCV 2012上的一篇关于特征点检测与匹配的论文《FREAK: Fast Retina Keypoint》上提出的,从文章标题中可以看出来该算法的一个特点是快速,另外一个特点就是该算法是被人眼识别物体的原理上得到启发提出的。 看过我之前博文的可能知道,我到现在已经把SIFT算法、ORB算法、BRIEF算法和BRISK算法都进行了介绍。可以看出BRIEF、ORB和BRISK都是特
局部特征点检测与匹配算法研究
opencv3.1.0 特征点检测与图像匹配(features2d、xfeatures2d)
OpenCV 双目匹配流程
一. 读取图像读入两幅需要匹配的图像。//-- Step 1: 读入图像 Mat image1 = imread("./images/parliament1.bmp", 0); Mat image2 = imread("./images/parliament2.bmp", 0);二. 特征检测特征检测的方法很多,这里以 SURF 法为例。//-- Step 2: 用 SURF 法检测特征关键点 in
指纹识别源代码(3)-特征点匹配
特征点匹配主要采用三个方法1.根据距离判断找到某一个特征点,从该特征点沿着纹线走num个距离,并计算出每走一步距离该特征点的距离,最后会得到num个装有长度信息的数组,如果两幅指纹相同则他们含有相同的特征点而且得到的数组对应的位置的数据基本相等% 特征点匹配 % 纹线长度匹配 对于找到的特征点和纹线 沿着纹线走5个像素到原始端点的距离 function d=distance(x0,y0,num,t...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 快速学python javafx 快速学习