SLAM OpenCV提取和匹配ORB特征
这个程序使用OpenCV提取和匹配图像的ORB特征。输入图片是两张不同视角拍摄的同一物体程序运行后先提取出第一张图片的ORB特征按任意键(比如空格)之后显示直接匹配ORB特征的结果可以看到有一些线和大多数线不平行出现了匹配错误。再按任意键之后过滤掉了匹配错误的连线代码#include iostream #include opencv2/core/core.hpp #include opencv2/features2d/features2d.hpp #include opencv2/highgui/highgui.hpp #include chrono using namespace std; using namespace cv; int main(int argc, char **argv) { if (argc ! 3) { cout usage: feature_extraction img1 img2 endl; return 1; } //-- 读取图像 Mat img_1 imread(argv[1], CV_LOAD_IMAGE_COLOR); Mat img_2 imread(argv[2], CV_LOAD_IMAGE_COLOR); assert(img_1.data ! nullptr img_2.data ! nullptr); //-- 初始化 std::vectorKeyPoint keypoints_1, keypoints_2; Mat descriptors_1, descriptors_2; PtrFeatureDetector detector ORB::create(); PtrDescriptorExtractor descriptor ORB::create(); PtrDescriptorMatcher matcher DescriptorMatcher::create(BruteForce-Hamming); //-- 第一步:检测 Oriented FAST 角点位置 chrono::steady_clock::time_point t1 chrono::steady_clock::now(); detector-detect(img_1, keypoints_1); detector-detect(img_2, keypoints_2); //-- 第二步:根据角点位置计算 BRIEF 描述子 descriptor-compute(img_1, keypoints_1, descriptors_1); descriptor-compute(img_2, keypoints_2, descriptors_2); chrono::steady_clock::time_point t2 chrono::steady_clock::now(); chrono::durationdouble time_used chrono::duration_castchrono::durationdouble(t2 - t1); cout extract ORB cost time_used.count() seconds. endl; Mat outimg1; drawKeypoints(img_1, keypoints_1, outimg1, Scalar::all(-1), DrawMatchesFlags::DEFAULT); imshow(ORB features, outimg1); //-- 第三步:对两幅图像中的BRIEF描述子进行匹配使用 Hamming 距离 vectorDMatch matches; t1 chrono::steady_clock::now(); matcher-match(descriptors_1, descriptors_2, matches); t2 chrono::steady_clock::now(); time_used chrono::duration_castchrono::durationdouble(t2 - t1); cout match ORB cost time_used.count() seconds. endl; //-- 第四步:匹配点对筛选 // 计算最小距离和最大距离 auto min_max minmax_element(matches.begin(), matches.end(), [](const DMatch m1, const DMatch m2) { return m1.distance m2.distance; }); double min_dist min_max.first-distance; double max_dist min_max.second-distance; printf(-- Max dist : %f \n, max_dist); printf(-- Min dist : %f \n, min_dist); //当描述子之间的距离大于两倍的最小距离时,即认为匹配有误.但有时候最小距离会非常小,设置一个经验值30作为下限. std::vectorDMatch good_matches; for (int i 0; i descriptors_1.rows; i) { if (matches[i].distance max(2 * min_dist, 30.0)) { good_matches.push_back(matches[i]); } } //-- 第五步:绘制匹配结果 Mat img_match; Mat img_goodmatch; drawMatches(img_1, keypoints_1, img_2, keypoints_2, matches, img_match); drawMatches(img_1, keypoints_1, img_2, keypoints_2, good_matches, img_goodmatch); imshow(all matches, img_match); imshow(good matches, img_goodmatch); waitKey(0); return 0; }参考高翔《视觉SLAM十四讲》

相关新闻

SLAM OpenCV的基本使用方法

SLAM OpenCV的基本使用方法

这个程序演示OpenCV的基本图像操作:图像读取、显示、像素遍历、复制、赋值等。程序运行后先显示这张图片:按任意键(比如空格)之后,修改左上角的像素为一个黑色小方块:再次按任意键之后,复制了之前的图片,然…

2026/7/24 5:59:31阅读更多 →
YOLO11-SEG模型在钢水罐缺陷检测中的应用与优化

YOLO11-SEG模型在钢水罐缺陷检测中的应用与优化

1. 项目背景与核心挑战在钢铁冶炼行业,钢水罐作为高温液态金属的运输载体,其安全检测一直是生产流程中的关键环节。传统的人工目检方式存在效率低、危险性高、主观性强等问题。我们团队基于YOLO11-SEG模型开发的智能检测系统,实现了钢水罐表面…

2026/7/24 5:59:31阅读更多 →
局域网加密共享软件:从SMB安全困局到轻量化替代方案

局域网加密共享软件:从SMB安全困局到轻量化替代方案

一、引言:文件共享的“安全-便利”悖论 在企业的日常运营中,文件共享是最高频的基础需求之一。然而,这一需求往往面临一个两难局面:共享了就不安全,安全了就没法共享。 Windows共享文件夹(SMB协议&#xff…

2026/7/24 5:59:31阅读更多 →
SAR ADC评估套件实战:从硬件配置到性能分析的完整指南

SAR ADC评估套件实战:从硬件配置到性能分析的完整指南

1. 项目概述:深入解析SAR ADC评估套件的核心价值在信号链设计的核心地带,模数转换器(ADC)扮演着将现实世界连续变化的模拟信号,精准转换为数字系统可处理的离散代码的关键角色。对于追求高精度、中等速度与低功耗平衡的…

2026/7/24 7:23:47阅读更多 →
思维链推理技术:原理、应用与前沿进展

思维链推理技术:原理、应用与前沿进展

1. 思维链推理技术全景解读这篇论文标题《Navigate through Enigmatic Labyrinth: A Survey of Chain of Thought Reasoning: Advances, Frontiers and...》本身就揭示了研究对象的复杂性。作为认知科学和人工智能交叉领域的前沿课题,思维链(Chain-of-Thought, CoT)…

2026/7/24 7:23:47阅读更多 →
荣耀Robot Phone:AI交互与硬件创新的融合实践

荣耀Robot Phone:AI交互与硬件创新的融合实践

1. 荣耀Robot Phone的产品定位解析作为深耕手机零售行业十余年的从业者,我见证过无数新品的起起落落。荣耀Robot Phone的出现,确实给这个同质化严重的市场带来了久违的新鲜感。这款产品最吸引我的地方在于它试图重新定义"智能手机"的边界——不…

2026/7/24 7:23:47阅读更多 →
高频降压转换器外围元件选型与PCB布局实战指南

高频降压转换器外围元件选型与PCB布局实战指南

1. TPS6267x系列高频降压转换器:设计要点与外围元件选型指南在嵌入式系统、便携式设备和各类传感器模块的设计中,电源部分往往是决定整个系统稳定性和能效的关键。尤其是当你的PCB空间被压缩到极致,而负载又对电源噪声和瞬态响应有苛刻要求时…

2026/7/24 7:23:47阅读更多 →
大模型与SKills结合的企业知识管理系统实践

大模型与SKills结合的企业知识管理系统实践

1. 项目概述"基于大模型、SKills的知识管理"这个标题背后,隐藏着一个正在重塑企业知识工作流程的技术革命。作为一名经历过从传统知识库到AI驱动系统转型的从业者,我亲眼见证了当大语言模型(LLM)遇上结构化技能&#xf…

2026/7/24 7:23:47阅读更多 →
AI模型随机数生成偏好:套壳API检测与行为指纹技术解析

AI模型随机数生成偏好:套壳API检测与行为指纹技术解析

这次我们来看一个很有意思的研究发现:布拉格经济大学的研究团队发现,AI模型在生成随机数时存在特定的"偏好",这种偏好可以作为一种"行为指纹"来检测套壳API。简单来说,很多声称自研的AI服务可能只是对现有大模…

2026/7/24 7:21:47阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 0:58:53阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 0:58:53阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 0:58:53阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

2026/7/24 0:00:06阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →