opencv3/C++怎么实现FLANN特征匹配
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍了opencv3/C++怎么实现FLANN特征匹配的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇opencv3/C++怎么实现FLANN特征匹配文章都会有
千家信息网最后更新 2025年11月13日opencv3/C++怎么实现FLANN特征匹配
这篇文章主要介绍了opencv3/C++怎么实现FLANN特征匹配的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇opencv3/C++怎么实现FLANN特征匹配文章都会有所收获,下面我们一起来看看吧。
使用函数detectAndCompute()检测关键点并计算描述符
函数detectAndCompute()参数说明:
void detectAndCompute( InputArray image, //图像InputArray mask, //掩模CV_OUT std::vector& keypoints,//输出关键点的集合OutputArray descriptors,//计算描述符(descriptors[i]是为keypoints[i]的计算描述符)bool useProvidedKeypoints=false //使用提供的关键点);
match()从查询集中查找每个描述符的最佳匹配。
参数说明:
void match( InputArray queryDescriptors, //查询描述符集InputArray trainDescriptors, //训练描述符集合CV_OUT std::vector& matches, //匹配InputArray mask=noArray() //指定输入查询和描述符的列表矩阵之间的允许匹配的掩码) const;
FLANN特征匹配示例:
#include#include using namespace cv;using namespace cv::xfeatures2d;//FLANN对高维数据较快int main(){ Mat src1,src2; src1 = imread("E:/image/image/card2.jpg"); src2 = imread("E:/image/image/cards.jpg"); if (src1.empty() || src2.empty()) { printf("can ont load images....\n"); return -1; } imshow("image1", src1); imshow("image2", src2); int minHessian = 400; //选择SURF特征 Ptr detector = SURF::create(minHessian); std::vector keypoints1; std::vector keypoints2; Mat descriptor1, descriptor2; //检测关键点并计算描述符 detector->detectAndCompute(src1, Mat(), keypoints1, descriptor1); detector->detectAndCompute(src2, Mat(), keypoints2, descriptor2); //基于Flann的描述符匹配器 FlannBasedMatcher matcher; std::vector matches; //从查询集中查找每个描述符的最佳匹配 matcher.match(descriptor1, descriptor2, matches); double minDist = 1000; double maxDist = 0; for (int i = 0; i < descriptor1.rows; i++) { double dist = matches[i].distance; printf("%f \n", dist); if (dist > maxDist) { maxDist = dist; } if (dist < minDist) { minDist = dist; } } //DMatch类用于匹配关键点描述符的 std::vector goodMatches; for (int i = 0; i < descriptor1.rows; i++) { double dist = matches[i].distance; if (dist < max(2.5*minDist, 0.02)) { goodMatches.push_back(matches[i]); } } Mat matchesImg; drawMatches(src1, keypoints1, src2, keypoints2, goodMatches, matchesImg, Scalar::all(-1), Scalar::all(-1), std::vector (), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS); imshow("output", matchesImg); waitKey(); return 0;}


关于"opencv3/C++怎么实现FLANN特征匹配"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"opencv3/C++怎么实现FLANN特征匹配"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
特征
关键
关键点
查询
知识
内容
函数
参数
篇文章
检测
之间
价值
图像
操作简单
数据
文章
易懂
更多
看吧
矩阵
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
贷记卡逾期报送金融数据库
平顶山网络技术有限公司
要发挥什么网络安全基础作用
sock5代理服务器软件
数据库开发的主要特点
迅狮网络技术
租用云服务搭建svn服务器
服务器怎么找到注册
梦幻西游能开几个服务器
小地方软件开发好不好
db2数据库改ip后连不上
数据库添加怎么添加字段
基岩版可以进入2b2t服务器吗
97视频软件开发
数据库备份工具backup
迷你世界炸mc服务器照片
4代服务器内存什么时候出的
南阳软件开发哪些公司好一些
浏览器与www服务器
创维酷开提示无法连接服务器
wps用什么数据库
简述数据库的组成部分
闽政通服务器打不开怎么修复
平顶山网络技术有限公司
sql数据库查询今年
南阳软件开发哪些公司好一些
sql数据库主键语句
恒生电子软件开发电脑
hp服务器可以装xp系统吗
信锐网络技术公司合肥地址