计算机系统应用教程网站

网站首页 > 技术文章 正文

OpenCV使用goodFeaturesToTrack实现角点检测

btikc 2025-02-06 14:05:58 技术文章 9 ℃ 0 评论

1、概述

  案例:使用goodFeaturesToTrack实现角点检测

  特点:goodFeaturesToTrack的检测速度比cornerHarris角点检测的速度更加快速,且API的使用更加方便

goodFeaturesToTrack(src,corners,maxCorners,quality_level,min_distance,Mat(),block_size,use_harris,k);
1.src:输入图像,输入的图像必须是8位或32位单通道图像
2.corners:输出的角点使用vector存储
3.maxCorners:最大角点数目,也就是corners集合中能存放的最大交点数,也就是最强的前corners个角点
4.quality_level:质量水平系数,是0.01~1之间的系数,其中系数越大检测到的角点就越少,反之亦然
5.min_distance:角点之间的最小距离,小于此距离的角点会被忽略,距离越大有可能检测到的角点就越少
6.Mat()掩码,mask=0忽略,基础用法忽略即可
7.block_size:Sobel算子,使用的邻域,四邻域,八邻域等 3,5,7
9.user_harris:是否使用harris检测,true是,false否
10.k:harris角点检测时使用一般为0.04,user_harris=false时此参数会被忽略

  角点检测步骤:

    1.加载原图

    2.图像灰度化

    3.执行角点检测

    4.绘制角点并显示图像  

2、代码示例

 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 corners;//检测出的角点
    goodFeaturesToTrack(gray,corners,maxCorners,quality_level,min_distance,Mat(),block_size,use_harris,k);
    //将角点绘制出来
    for(size_t t = 0;tsize(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
    scene.addItem(item);

3、演示图片

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表