当前位置: 首页 > news >正文

OpenCV 图形API(62)特征检测-----在图像中查找最显著的角点函数goodFeaturesToTrack()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

确定图像上的强角点。

该函数在图像或指定的图像区域内找到最显著的角点,如文献[240]中所述。

  • 函数使用 cornerMinEigenVal 或 cornerHarris 在每个源图像像素上计算角点质量测量值。
  • 函数执行非极大值抑制(保留3x3邻域内的局部最大值)。
  • 最小特征值小于 qualityLevel⋅maxx,yqualityMeasureMap(x,y) 的角点将被拒绝。
  • 剩余的角点按照质量测量值从大到小排序。
  • 函数会丢弃每一个在其距离小于 maxDistance 范围内存在更强角点的角点。

该函数可以用于初始化基于点的对象跟踪器。

注意

如果以不同的 qualityLevel 参数值 A 和 B 调用该函数,并且 A > B,则返回的带有 qualityLevel=A 的角点向量将是带有 qualityLevel=B 的输出向量的前缀。
函数的文字ID是 “org.opencv.imgproc.feature.goodFeaturesToTrack”。

函数原型

GArray<Point2f> cv::gapi::goodFeaturesToTrack 
(const GMat &  	image,int  	maxCorners,double  	qualityLevel,double  	minDistance,const Mat &  	mask = Mat(),int  	blockSize = 3,bool  	useHarrisDetector = false,double  	k = 0.04 
) 		

参数

  • 参数 image:输入8位或浮点32位、单通道图像。 - 参数 maxCorners:要返回的最大角点数量。如果找到的角点多于 maxCorners,将返回最强的那些。maxCorners <= 0 表示对最大数量没有限制,并返回所有检测到的角点。
  • 参数 qualityLevel:表征接受的最小图像角点质量的参数。参数值乘以最佳角点质量测量值,即最小特征值(见 cornerMinEigenVal)或 Harris 函数响应(见 cornerHarris)。质量测量值低于此乘积的角点将被拒绝。例如,如果最佳角点的质量测量值为1500,qualityLevel=0.01,则所有质量测量值小于15的角点都将被拒绝。
  • 参数 minDistance:返回角点之间的最小可能欧几里得距离。
  • 参数 mask:可选的兴趣区域。如果图像不为空(需要类型为 CV_8UC1 并且与 image 大小相同),则指定检测角点的区域。
  • 参数 blockSize:计算每个像素邻域导数协方差矩阵的平均块大小。参见 cornerEigenValsAndVecs。
  • 参数 useHarrisDetector:指示是否使用 Harris 检测器(见 cornerHarris)或 cornerMinEigenVal 的参数。
  • 参数 k:Harris 检测器的自由参数。

返回值
检测到的角点向量。

代码示例

#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>
#include <opencv2/gapi/imgproc.hpp>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace cv::gapi;int main()
{// 读取输入图像,通常为灰度图像Mat src = imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", IMREAD_GRAYSCALE );if ( src.empty() ){std::cerr << "无法读取图像" << std::endl;return -1;}// 定义G-API网络cv::GMat in;cv::GArray< cv::Point2f > kpts;kpts = gapi::goodFeaturesToTrack( in,100,     // maxCorners0.01,    // qualityLevel10,      // minDistanceMat(),   // mask3,       // blockSizefalse,   // useHarrisDetector0.04 );  // k// 创建并执行G-API图cv::GComputation comp( cv::GIn( in ), cv::GOut( kpts ) );std::vector< cv::Point2f > corners;comp.apply( gin( src ), gout( corners ) );// 在原图上绘制检测到的角点for ( const auto& point : corners ){circle( src, point, 5, Scalar( 0, 0, 255 ), FILLED );}// 显示结果imshow( "Good Features to Track", src );waitKey();return 0;
}

运行结果

在这里插入图片描述

http://www.xdnf.cn/news/116767.html

相关文章:

  • 动态哈希映射深度指南:从基础到高阶实现与优化
  • windows部署ChatTTS对话场景的文本转语音大模型
  • 人工智能在个人能力提升方面的研究
  • DeepSeek是否采用了混合专家(MoE)架构?它如何提升模型效率?
  • 《Pinia 从入门到精通》Vue 3 官方状态管理 -- 插件扩展篇
  • 游戏开发核心技术全景解析——从引擎架构到网络安全防护体系
  • 架构-软件架构设计
  • 协作开发攻略:Git全面使用指南 — 第一部分 Git基础
  • 出现delete CR eslint错误
  • NVIDIA高级辅助驾驶安全报告解析
  • HTML、XHTML 和 XML区别
  • 网络安全 | F5 WAF 黑白名单配置实践指南
  • 【网工第6版】第5章 网络互联⑦
  • 【设计模式-4】深入理解设计模式:工厂模式详解
  • 自由学习记录(57)
  • Julia Notebook
  • React中createPortal 的详细用法
  • 问道数码兽 怀旧剧情回合手游源码搭建教程(反查重优化版)
  • 如何快速高效学习Python?
  • [密码学实战]在Linux中实现SDF密码设备接口
  • Python基础语法:字面量,注释,关键字,标识符,变量和引用,程序执行的3大流程
  • SIGGRAPH投稿相关官方指导
  • R-CNN,Fast-R-CNN-Faster-R-CNN个人笔记
  • Visual Studio C/C++编译器cl.exe的/source-charset与/execution-charset设置项
  • Linux平台实现低延迟的RTSP、RTMP播放
  • dirsearch 使用教程:详细指南与配置解析
  • Java 使用 RabbitMQ 消息处理(快速上手指南)
  • 考拉悠然:科技与匠心,以烟草虫情AI监测系统共筑品质未来
  • LeetCode 3040 相同分数的最大操作数目II
  • c加加学习之day06->STL标准库->day01