OpenCV使用goodFeaturesToTrack实现角点检测
一、概述
案例:使用goodFeaturesToTrack实现角点检测
特点:goodFeaturesToTrack的检测速度比cornerHarris角点检测的速度更加快速,且API的使用更加方便
1 | goodFeaturesToTrack(src,corners,maxCorners,quality_level,min_distance,Mat(),block_size,use_harris,k);<br>1.src:输入图像,输入的图像必须是8位或32位单通道图像<br>2.corners:输出的角点使用vector<Point2f>存储<br>3.maxCorners:最大角点数目,也就是corners集合中能存放的最大交点数,也就是最强的前corners个角点<br>4.quality_level:质量水平系数,是0.01~1之间的系数,其中系数越大检测到的角点就越少,反之亦然<br>5.min_distance:角点之间的最小距离,小于此距离的角点会被忽略,距离越大有可能检测到的角点就越少<br>6.Mat()掩码,mask=0忽略,基础用法忽略即可<br>7.block_size:Sobel算子,使用的邻域,四邻域,八邻域等 3,5,7<br>9.user_harris:是否使用harris检测, true 是, false 否<br>10.k:harris角点检测时使用一般为0.04,user_harris= false 时此参数会被忽略 |
角点检测步骤:
1.加载原图
2.图像灰度化
3.执行角点检测
4.绘制角点并显示图像
二、代码示例
updateParams(min_distanceEidt->text().toDouble(),block_sizeEdit->text().toInt()); src = imread(filePath.toStdString().c_str());//加载原图 if(src.empty()){ qDebug()<<"Error file is empty"; return; } // imshow("src",src); cvtColor(src,gray,COLOR_BGR2GRAY);//转为灰度图 // imshow("gray",gray); //执行角点检测 vector<Point2f> corners;//检测出的角点 goodFeaturesToTrack(gray,corners,maxCorners,quality_level,min_distance,Mat(),block_size,use_harris,k); //将角点绘制出来 for(size_t t = 0;t<corners.size();t++){ circle(src,corners[t],3,Scalar(0,0,255),1,LINE_8); } QImage image = ImageUtils::matToQImage(src); QPixmap pixmap = QPixmap::fromImage(image); QGraphicsPixmapItem *item = new QGraphicsPixmapItem(pixmap.scaled(this->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation)); scene.addItem(item);
三、演示图片
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
2021-03-13 Android将Bitmap缩放到指定大小,并可兼容特殊机型,如三星、一加手机等