C++ OpenCV特征提取之自定义角点检测器(一)

前言

我们在前面学习了《C++ OpenCV特征提取之Harris角点检测》和《C++ OpenCV特征提取之Shi-Tomasi角点检测》,今天我们再来学习一下自定义角点检测器。

自定义角点检测器简介

  • 基于Harris与Shi-Tomasi角点检测

  • 首先通过计算矩阵M得到两个特征值根据他们得到角点响应值

  • 然后自己设置阈值实现计算出阈值得到有效响应值的角点设置

相关API

C++: void cornerEigenValsAndVecs(

       InputArray src,       --单通道输入8位或浮点图像

       OutputArray dst,    --输出图像,同源图像或CV_32FC(6)

       int blockSize,         --邻域大小值

       int apertureSize,    --Sobel算子的参数

       int borderType=BORDER_DEFAULT --像素外插方法

)

C++: void cornerMinEigenVal(

       InputArray src,     --单通道输入8位或浮点图像

       OutputArray dst,  --图像存储的最小特征值。类型为CV_32FC1

       int blockSize,       --邻域大小值

       int apertureSize=3,   --Sobel算子的参数

       int borderType=BORDER_DEFAULT  --像素外插方法

)


代码演示

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

这章我们试试Harris自定义检测

首先定义相关的参数

我们要先定义输出的最大最小值,一个响应图,还有创建Trackbar用到的值和方法。都定义在上面是因为需要在TrackBar里调用。

然后在运行项目里面定义基本邻域,能过我们的API  cornerEigenValsAndVecs获得到输出图像

再根据输出的图像计算响应值,并且计算出最大最小值。

然后在目标窗口中增加一个TrackBar

上面是TrackBar的滑动事件。


输出结果


-END-

长按下方二维码关注微卡智享

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值