ORB关键点

  • 画特征点 drawKeypoints 函数
  • 绘制匹配结果 drawMatches函数

画特征点 drawKeypoints 函数

前期准备,读取图像,检测ORB特征点

//读取图像
cv::Mat img_1 = cv::imread(argv[1], CV_LOAD_IMAGE_COLOR);
//创建特征点合集
std::vector<cv::KeyPoint> keypoints_1;
//ORB关键点检测函数
cv::Ptr<cv::FeatureDetector> detector = cv::ORB::create();
//检测ORB特征点
detector->detect(img_1, keypoints_1);

画特征点

//输出图像
Mat outimg1;
//输入影像、关键点、输出影像、颜色、标志
drawKeypoints(img_1, keypoints_1, outimg1, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
//显示影像
imshow("ORB features", outimg1);

drawKeypoints 函数参数为:
image – Source image.
keypoints – Keypoints from the source image.
outImage – Output image. Its content depends on the flags value defining what is drawn in the output image. See possible flags bit values below.
color – Color of keypoints.
flags – Flags setting drawing features. Possible flags bit values are defined by DrawMatchesFlags. See details above in drawMatches .

绘制匹配结果 drawMatches函数

  cv::Mat img_1 = cv::imread(argv[1], CV_LOAD_IMAGE_COLOR);cv::Mat img_2 = cv::imread(argv[2], CV_LOAD_IMAGE_COLOR);//-- 初始化std::vector<cv::KeyPoint> keypoints_1, keypoints_2;cv::Mat descriptors_1, descriptors_2;cv::Ptr<cv::FeatureDetector> detector = cv::ORB::create();cv::Ptr<cv::DescriptorExtractor> descriptor = cv::ORB::create();cv::Ptr<cv::DescriptorMatcher> matcher = cv::DescriptorMatcher::create("BruteForce-Hamming");//-- 第一步:检测 Oriented FAST 角点位置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);//-- 第三步:对两幅图像中的BRIEF描述子进行匹配,使用 Hamming 距离vector<cv::DMatch> matches;matcher->match(descriptors_1, descriptors_2, matches);//-- 第四步:绘制匹配结果Mat img_match;drawMatches(img_1, keypoints_1, img_2, keypoints_2, matches, img_match);imshow("all matches", img_match);

drawMatches 函数参数:
img1 – First source image.
keypoints1 – Keypoints from the first source image.
img2 – Second source image.
keypoints2 – Keypoints from the second source image.
matches1to2 – Matches from the first image to the second one, which means that keypoints1[i] has a corresponding point in keypoints2[matches[i]] .
outImg – Output image. Its content depends on the flags value defining what is drawn in the output image. See possible flags bit values below.
matchColor – Color of matches (lines and connected keypoints). If matchColor== Scalar::all(-1) , the color is generated randomly.
singlePointColor – Color of single keypoints (circles), which means that keypoints do not have the matches. If singlePointColor==Scalar::all(-1) , the color is generated randomly.
matchesMask – Mask determining which matches are drawn. If the mask is empty, all matches are drawn.
flags – Flags setting drawing features. Possible flags bit values are defined by DrawMatchesFlags. This function draws matches of keypoints from two images in the output image. Match is a line connecting two keypoints (circles). See cv::DrawMatchesFlags.

opencv 画orb特征点相关推荐

  1. opencv 基于ORB特征点图像拼接

    原图 #include <iostream> #include <opencv2/opencv.hpp> #include <opencv.hpp>using na ...

  2. java opencv orb_OpenCV提取ORB特征并匹配

    一.什么是特征? 图像的特征(Feature),是图像上最具代表性的一些点.所谓最具代表性,就是说这些点包含了图像表述的大部分信息.即使旋转.缩放,甚至调整图像的亮度,这些点仍然稳定地存在,不会丢失. ...

  3. opencv与ORB SLAM提取orb特征点比较

    在ORB SLAM中,通过四叉树的方式存储关键点,使得图像上特征点分布均匀,便于追踪.此次实验分别用opencv接口和ORB SLAM实现特征点的提取,效果图如下: 实现程序: #include &l ...

  4. 视觉SLAM——ORB特征

    一.OpenCV 的ORB 特征--slambook2/ch7/orb_ cv.cpp #include <iostream> #include <opencv2/core/core ...

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

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

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

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

  7. opencv上gpu版surf特征点与orb特征点提取及匹配实例

    opencv上gpu版surf特征点与orb特征点提取及匹配实例 标签: gpu版surfgpu orbsurf和orbgpu surf及orbsurf orb gpu 2016-09-25 23:4 ...

  8. ORB特征描述原理、python实现及基于opencv实现

    写在前面: 黄宁然,看你看过的算法系列*,不如,就到此吧. 参考文献镇楼: [1]汪洋,扫地机器人定位算法设计与嵌入式系统实现 [2]王雯涛,ORB图像特征提取算法的FPGA设计与实现 [3]房亮,基 ...

  9. Android OpenCV(五十七):ORB特征点FLANN匹配

    前言 Android OpenCV 系列的上一篇文章中,我们学习了 ORB 特征点的暴力匹配方式.复习一下,暴力匹配法会针对查询描述子中的每个描述符在训练描述子中寻找匹配描述子,算法复杂度是 O( n ...

最新文章

  1. HTML发送语音,上传音频PHP接收
  2. 3.Spring Security 自定义用户认证
  3. Verilog初级教程(3)Verilog 数据类型
  4. 消息确认机制---confirm异步
  5. 关于“WireX Botnet”事件Android样本分析报告
  6. B02_NumPy数据属性(ndarray.ndim,ndarray.shape,ndarray.itemsize,ndarray.flags)
  7. Ajax Toolkit AutoComplete 几种用法
  8. python里的符号区别_Python中的方括号和点符号有什么区别?
  9. 二叉树面试题:判断树是否为完全二叉树和求二叉树的镜像
  10. 使用recyclerView实现无限循环banner效果
  11. 天津市全国计算机等级报名时间,天津市2018年全国计算机等级考试报名时间及地点...
  12. 实现一个文本文件的解析类(vector,字符串解析的应用)
  13. 搜狐邮箱怎么开启pop3服务器,POP3是什么?怎样开通POP3?
  14. 为什么有些网站域名不以www开头?什么是二级域名?
  15. 9个方法,教你用Google Drive做好云端档案管理
  16. 人工智能进化史:从麦卡锡到“索菲亚” | 精选
  17. 上海千锋培训python
  18. 小米更新到MIUI13版本后,进行android调试,出现无法实现USB下载安装的问题
  19. 《Cocos Creator游戏实战》你画我猜中的画板功能
  20. 【前端知识整理】边距塌陷问题 什么是BFC 如何阻止边距塌陷

热门文章

  1. 电动汽车充电公司Allego曲线上市:作价超30亿美元 路演PPT曝光
  2. tensorflow基础知识10,三维可视化embedding
  3. 如何验签名真伪?法大大手写签名识别功能来了!
  4. 汇编语言编程,将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上
  5. 实验室云检验信息系统(云LIS源码)
  6. 移动电影院布局5G,垂直社交体验再升级
  7. iOS上用GPUImage给视频加滤镜
  8. 强大的终端模拟器:Termux
  9. 香橙派(orangepi)vnc连接灰屏
  10. 思科华为交换设备安全配置命令对比