#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp>
#include <iostream>using namespace cv::xfeatures2d;
using namespace std;
using namespace cv;
// 计算图像的ORB特征及匹配
cv::Mat cacORBFeatureAndCompare(cv::Mat srcImage1,cv::Mat srcImage2)
{CV_Assert(srcImage1.data != NULL && srcImage2.data != NULL);// 转换为灰度cv::Mat grayMat1, grayMat2;cv::cvtColor(srcImage1, grayMat1, CV_RGB2GRAY);cv::cvtColor(srcImage2, grayMat2, CV_RGB2GRAY);// 关键点检测std::vector<KeyPoint> keyPoints1, keyPoints2;// 描述特征向量cv::Mat descriptorMat1, descriptorMat2;// 初始化ORB检测描述子cv::Ptr<Feature2D> orb = cv::ORB::create();// 计算兴趣点orb->detectAndCompute(grayMat1, Mat(), keyPoints1, descriptorMat1,false);orb->detectAndCompute(grayMat2, Mat(), keyPoints2, descriptorMat2,false);// 特征匹配BFMatcher matcher(NORM_HAMMING);std::vector<DMatch> mathces;matcher.match(descriptorMat1, descriptorMat2, mathces);// 绘制匹配点集Mat matchMat;drawMatches(srcImage1, keyPoints1,srcImage2, keyPoints2, mathces, matchMat);//cv::imshow("Mathces", matchMat);return matchMat;
}
int main()
{// 读取源图像及待匹配图像cv::Mat srcImage1 =cv::imread("..\\images\\hand1.jpg", 1);if (srcImage1.empty())return -1;cv::Mat srcImage2 =cv::imread("..\\images\\hand3.jpg", 1);if (srcImage2.empty())return -1;cv::Mat  matchMat = cacORBFeatureAndCompare(srcImage1, srcImage2);cv::imshow("matchMat", matchMat);cv::waitKey(0);return 0;
}

转载:http://blog.csdn.net/zhuwei1988

ORB 特征检测与匹配相关推荐

  1. SLAM中的 ORB特征检测与匹配(理论篇)

    <SLAM十四讲>视觉里程计第一部分的实践便是ORB特征检测 下面来讲讲ORB的理论: ORB算法分为两部分,第一部分是特征提取算法即FAST算法,第二部分是特征描述子BRIEF,BRIE ...

  2. 数字图像处理学习笔记(一):特征检测和匹配概述

    数字图像处理学习笔记(一):特征检测和匹配概述 参考博客: 特征点的匹配 SIFT特征详解 数字图像处理学习笔记(二):SIFT(尺度不变特征变换)算法 1.特征点概述 如何高效且准确的匹配出两个不同 ...

  3. Opencv实现Sift、Surf、ORB特征提取与匹配

    在opencv3中,这三个算子都转移到一个名为xfeature2d的第三方库中,而在opencv2中这三个算子在nonfree库中. 关于在vs下配置opencv可参考我转载的另外一篇文章.注意版本号 ...

  4. OpenCV基础(23)特征检测与匹配

    图像的8x8像素部分被考虑,并将这个 8x8 框进一步划分为 4 个块,每个块为 4x4 维度.在每个 4x4 块内,图像梯度以向量的形式表示.通过搜索最独特或不同的特征在图像中找到关键点.这里,Ke ...

  5. 基于OpenCV&ORB和特征匹配的双视频图像拼接(源码&部署教程)

    1.双视频拼接效果展示 2.视频演示 [项目分享]Python基于OpenCV&ORB和特征匹配的双视频图像拼接(源码&部署教程)_哔哩哔哩_bilibili 3.背景 随着汽车电子和 ...

  6. Python基于OpenCV&ORB和特征匹配的双视频图像拼接(源码&部署教程)

    1.双视频拼接效果展示 2.视频演示 [项目分享]Python基于OpenCV&ORB和特征匹配的双视频图像拼接(源码&部署教程)_哔哩哔哩_bilibili 3.背景 随着汽车电子和 ...

  7. ORB-SLAM2从理论到代码实现(三):ORB特征提取和匹配理论和代码详解

    1. 理论知识 特征点由关键点(Key-point)和描述子(Descriptor)两部分组成.ORB特征点(Oriented FAST and Rotated BRIEF)是由Oriented FA ...

  8. 特征检测与匹配,测试8点法求取基础矩阵F(三维重建task1-3)

    特征检测与匹配(三维重建task1-3) #include <math/matrix_svd.h> #include "math/matrix.h" #include ...

  9. 3D视觉(四):ORB特征提取与匹配

    3D视觉(四):ORB特征提取与匹配 根据维基百科的定义,图像特征是一组与计算任务相关的信息,计算任务取决于具体的应用.简而言之,特征是图像信息的另一种表达形式. 数字图像在计算机中以灰度值矩阵的方式 ...

最新文章

  1. 一文学会动态规划解题技巧
  2. 边缘AI是内存技术发展的催化剂
  3. 面试中经常出现的算法2(整理)
  4. linux+crontab执行php,如何使用Linux的Crontab执行PHP脚本
  5. step3 . day5 数据结构之线性表 栈和队的应用-球钟问题
  6. Spring配置文件中bean标签的scope属性
  7. JS数组与对象的遍历方法大全
  8. 条件编译指令:#if,#endif
  9. opencv查找边界_数据边界:查找差距,孤岛等
  10. 安卓自定义相机录像功能全解(不调用系统相机)
  11. 0% [正在连接 cn.archive.ubuntu.com (2001:67c:1562::19)]关于其连接不上的问题:
  12. JavaScript实现模糊推荐的input框(类似百度搜索框)
  13. 【车流量计数】基于matlab光流场交通汽车检测跟踪【含Matlab源码 504期】
  14. 强大的诺顿扼杀了alexa工具条
  15. 网易面试题,小易沉迷游戏
  16. 作为APIcaller识别发票信息
  17. 软件测试-黑盒测试,白盒测试,灰盒测试
  18. # unity shader 后期轮廓(更新中)
  19. 【iOS】—— RunLoop详解
  20. picoCTF Web1

热门文章

  1. 软件测试培训需要学习什么技术
  2. 女生做软件测试需要学习什么技术?
  3. linux哪些文件被更新,Linux:如何確定文件是否已被其他進程更新?
  4. CentOS 7 命令
  5. 深入理解javascript函数系列第二篇——函数参数
  6. js字符串加密的几种方法
  7. CodeArt SharePoint Permission Extension 1.0 beta publish
  8. 如何解决在数据显示的时候,页面出现null的情况
  9. eclipse中安装使用Gradle构建工具
  10. Ubuntu双击运行Shell脚本