当前位置: 首页 > news >正文

OpenCv实战笔记(4)基于opencv实现ORB特征匹配检测

一、原理作用

ORB 原理(Oriented FAST and Rotated BRIEF):
特征点检测:使用 FAST 算法检测角点(关键点)。
方向计算:为每个关键点分配主方向,增强旋转不变性。
特征描述:使用 BRIEF(快速二进制描述符),通过图像灰度比较构造描述子。
描述子旋转:将 BRIEF 描述子旋转对齐主方向,增强旋转鲁棒性。
ORB作用
提取图像中稳定、重复性强的关键点;生成可用于图像匹配、识别、跟踪的紧凑二进制描述子。
应用场景:图像匹配(如拼接、全景)、 SLAM / 视觉里程计(机器人/无人车定位)、物体识别与检测、图像配准与对齐、图像检索

二、实现效果
在这里插入图片描述三、参考代码

void demo(const cv::Mat& img1, const cv::Mat& img2, cv::Mat& outputImg) {if (img1.empty() || img2.empty()) {std::cerr << "[feature_matching] Error: Input images are empty." << std::endl;return;}cv::Ptr<cv::ORB> orb = cv::ORB::create();std::vector<cv::KeyPoint> kp1, kp2;cv::Mat desc1, desc2;orb->detectAndCompute(img1, cv::noArray(), kp1, desc1);orb->detectAndCompute(img2, cv::noArray(), kp2, desc2);if (desc1.empty() || desc2.empty()) {std::cerr << "[feature_matching] Warning: Descriptor computation failed." << std::endl;return;}cv::BFMatcher matcher(cv::NORM_HAMMING);std::vector<std::vector<cv::DMatch>> knn_matches;matcher.knnMatch(desc1, desc2, knn_matches, 2);std::vector<cv::DMatch> good_matches;for (const auto& m : knn_matches) {if (m.size() >= 2 && m[0].distance < 0.75f * m[1].distance) {good_matches.push_back(m[0]);}}cv::drawMatches(img1, kp1, img2, kp2, good_matches, outputImg);
}
//应用
void MainWindow::sltOrb()
{// 加载两张灰度图像cv::Mat img1 = cv::imread("img1.jpg", cv::IMREAD_GRAYSCALE);cv::Mat img2 = cv::imread("img2.jpg", cv::IMREAD_GRAYSCALE);cv::Mat output;// 调用封装好的 ORB 特征匹配函数feature_matching::demo(img1, img2, output);// 显示结果图像if (!output.empty()) {cv::imshow("Feature Matching Result", output);cv::waitKey(0);}
}

欢迎关注我,一起交流!

相关文章:

  • SpringCloud之Ribbon基础认识-服务负载均衡
  • MySQL索引与事务
  • 游戏引擎学习第268天:合并调试链表与分组
  • windows 环境下 python环境安装与配置
  • KEIL_C51和KEIL_MDK共存
  • AI大模型学习十七、利用Dify搭建 AI 图片生成应用
  • average per-pixel disparity error: EPE及不同距离值下的误差曲线
  • Python函数式编程入门:闭包与装饰器详解
  • 开疆智能Canopen转Profinet网关连接工博士GBS20机器人配置案例
  • 栈应用:辅助站(c++)
  • 使用 CST 软件增强工业设备的电磁兼容性设计:原理、方法和应用
  • SpringBoot框架开发网络安全科普系统开发实现
  • SAP CEO Christian Klein专访:企业AI、云转型与未来战略
  • MySQL进阶篇2_SQL优化、锁
  • JDBC工具类
  • 基于Spring Boot + Vue的母婴商城系统( 前后端分离)
  • PHP框架在分布式系统中的应用!
  • python04——条件判断(选择结构)
  • OLE(对象链接与嵌入)剪贴板内容插入到 CAD 图形中——CAD c# 二次开发
  • Kubernetes生产实战(十二):无工具容器网络连接数暴增指南
  • 武汉旅游体育集团有限公司原党委书记、董事长董志向被查
  • 多省市已开展现房销售试点,去年全国现房销售面积占比超30%
  • 铁肩担道义,历史鉴未来——中共中央政治局委员、外交部长王毅谈习近平主席对俄罗斯进行国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典
  • “一节课、两小时”,体育正在回归“C位”
  • 中国金茂新任命三名副总裁,撤销区域公司
  • 马上评|让“贾宝玉是长子长孙”争议回归理性讨论