C++ OpenCV特征提取之如何实现亚像素级角点检测

发布时间:2021-11-26 10:26:07 作者:小新
来源:亿速云 阅读:414

这篇文章主要介绍了C++ OpenCV特征提取之如何实现亚像素级角点检测,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

前言

前面我们学习了Harris角点检测还有Shi-Tomasi角点检测等,如果我们要对有点的精度有更高的要求,就需要用到了亚像素级角点检测。其实在实际应用中可以看到,几乎所有的角点不会是一个真正的准确像素点。比如说我们得到的角点是(80,20),但是实际上是(80.223,20.789)。

亚像素定位方法

在OpenCV中已经为我们提供了一个亚像素定位取值的函数了。

相关API

C++: void cornerSubPix(

          InputArray image,   --输入图像

          InputOutputArray corners,  --初始输入坐标和角坐标

          Size winSize,   --一半的侧长度搜索值

          Size zeroZone,   --一半区域在搜索区域中的求和公式。
          TermCriteria criteria  --标准终止迭代处理的隅角细化

)

代码演示

我们再新建一个项目名为opencv--corner,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法

C++ OpenCV特征提取之如何实现亚像素级角点检测

首先我们还是用到了TrackBar

所以先定义TrackBar的参数

C++ OpenCV特征提取之如何实现亚像素级角点检测

然后在代码中创建TrackBar

C++ OpenCV特征提取之如何实现亚像素级角点检测

接下来就是我们最关键的函数SubPixel_Demo

C++ OpenCV特征提取之如何实现亚像素级角点检测

C++ OpenCV特征提取之如何实现亚像素级角点检测

C++ OpenCV特征提取之如何实现亚像素级角点检测


显示效果

C++ OpenCV特征提取之如何实现亚像素级角点检测

可以看到红色是我们原来用SHi-Toamsi角点检测出来的点,蓝色是用的亚像素检测出来的点会有小小的偏差,说明亚像素的点更精确一些,再看看命令行输出的我们的点的坐标,大部分都是带有小数的

C++ OpenCV特征提取之如何实现亚像素级角点检测


感谢你能够认真阅读完这篇文章,希望小编分享的“C++ OpenCV特征提取之如何实现亚像素级角点检测”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

推荐阅读:
  1. opencv3/C++如何实现光流点追踪
  2. opencv3/C++ HOG特征提取方式

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++ opencv

上一篇:如何分析java语言现状和发展

下一篇:C#如何实现基于Socket套接字的网络通信封装

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》