goodFeaturesToTrack关键点检测

本文介绍OpenCV中goodFeaturesToTrack函数的使用方法,包括各参数含义及示例代码。该函数用于检测图像中的角点,并可通过调整参数来优化检测结果。

环境:opencv 2.3.1

函数 goodFeaturesToTrack,函数原型:

void goodFeaturesToTrack( InputArray image, OutputArray corners,  
                                     int maxCorners, double qualityLevel, double minDistance,  
                                     InputArray mask=noArray(), int blockSize=3,  
                                     bool useHarrisDetector=false, double k=0.04 );  
  • 第一个参数image:8位或32位单通道灰度图像;
  • 第二个参数corners:位置点向量,保存的是检测到的角点的坐标;
  • 第三个参数maxCorners:定义可以检测到的角点的数量的最大值;
  • 第四个参数qualityLevel:检测到的角点的质量等级,角点特征值小于qualityLevel 乘以 最大特征值的点将被舍弃;
  • 第五个参数minDistance:两个角点间最小间距,以像素为单位;
  • 第六个参数mask:指定检测区域,若检测整幅图像,mask置为空Mat
  • 第七个参数blockSize:计算协方差矩阵时窗口大小;
  • 第八个参数useHarrisDetector:是否使用Harris角点检测,为false,则使用Shi-Tomasi算子;
  • 第九个参数k:留给Harris角点检测算子用的中间参数,一般取经验值0.04~0.06。第八个参数为false时,该参数不起作用;

函数使用实例:

int main()
{
    Mat img = imread("test.jpg");
    Mat grayImage;
    //转换灰度图
    cvtColor(img, grayImage, CV_BGR2GRAY);

    //开始进行角点检测  
    vector<Point2f> dstPoint2f;
    goodFeaturesToTrack(grayImage, dstPoint2f, 200, 0.01, 10, Mat(), 3);

    //遍历每个点,进行绘制,便于显示  
    Mat dstImage;
    img.copyTo(dstImage);
    for (int i = 0; i < (int)dstPoint2f.size(); i++)
    {
        circle(dstImage, dstPoint2f[i], 3, Scalar(theRNG().uniform(0, 255), theRNG().uniform(0, 255), theRNG().uniform(0, 255))
            , 2, 8);
    }
    imshow("Frame_Windows", dstImage);
    waitKey();
    return 0;
}

运行结果如下
这里写图片描述

opencv-4.4.0-vc14_vc15.exe 版本:4.4.0 2020年7月 OpenCV 4.x的夏季更新已发布 :晴天: 此版本的亮点: SIFT(尺度不变特征变换)算法已移至主存储库(SIFT的专利已过期) DNN模块: 改进的图层/激活/支持更多模型: 最新的Yolo v4检测器:#17148。为[yolo]层(Yolo v3和Yolo v4)禁用了每层NMS,因为它们是不正确的-用于cv::dnn::NMSBoxes所有检测。 ONNX:添加对Resnet_backbone(Torchvision)的支持#16887 EfficientDet模型支持:#17384 新样本/演示: 添加文本识别示例:C ++ / Python FlowNet2光流:#16575 英特尔®推理引擎后端(OpenVINO™): 增加了对OpenVINO 2020.3 LTS / 2020.4版本的支持 计划在下一版本中删除对NN Builder API的支持 CUDA后端中的许多修复和优化(感谢@YashasSamaga):PR G-API模块: 在OpenCV后端引入了用于状态内核的新API :GAPI_OCV_KERNEL_ST。有状态内核在各个图执行(标准中更多)或流的视频帧之间(以流模式)保留其状态。 在G-API推出更多面向视频的操作:goodFeaturesToTrack,buildOpticalFlowPyramid,calcOpicalFlowPyrLK。 添加了更多的图像处理内核:Laplacian和双边过滤器。 修复了G-API的OpenCL后端中的潜在崩溃。 OpenCV社区的许多其他伟大贡献,包括但不限于: Obj-C / Swift绑定:#17165 (opencv_contrib)Julia绑定是正在进行的GSoC项目的一部分:#2547 (opencv_contrib)BIMEF:生物启发的多重曝光融合框架,用于弱光图像增强: #2448 为CV_16UC1图像启用Otsu阈值:#16640 为文本检测添加笔划宽度变换算法:#2464 计划在Apache 2许可证上进行下一版本OE-32的 迁移#17491
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值