小编给大家分享一下C++ OpenCV特征提取之如何实现自定义角点检测器,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
成都创新互联专业为企业提供南雄网站建设、南雄做网站、南雄网站设计、南雄网站制作等企业网站建设、网页设计与制作、南雄企业网站模板建站服务,十载南雄做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
自定义角点检测器简介
基于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的滑动事件。
输出结果
看完了这篇文章,相信你对“C++ OpenCV特征提取之如何实现自定义角点检测器”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款