C#调用OpenCvSharp实现图像的角点检测

  角点检测用于获取图像特征,以支撑运动检测、目标识别、图像匹配等方面的应用。常用的角点检测算法包括Kitchen-Rosenfeld算法、Harris算法、KLT算法、SUSAN算法等,本文学习并测试Harris角点检测算法。
  关于Harris算法的数学原理请见参考文献1的第18、19课,其总共花50分钟左右讲解算法数学原理。OpenCvSharp中Harris算法的函数原型如下:

public static void CornerHarris(InputArray src, OutputArray dst, int blockSize, int ksize, double k, BorderTypes borderType = BorderTypes.Reflect101)

  其中:
    -src,源图像,带检测角点的图像,一般为灰度图,Mat类型;
    -dst,保存角点检测几个,其类型和尺寸与src相同;
    -blockSize,邻域大小,详见参考文献3-4;
    -ksize,Sobel算子的孔径大小,只能取1、3、5、7(参考文献3);
    -k,权重系数,一般取0.04~0.06(参考文献1)。

  实际测试过程中,将角点检测结果归一化处理,然后检测超过指定阈值的位置,并在原图中标识,主要代码及程序运行效果如下所示:

using Mat imgSrc = Cv2.ImRead(lblMsg.Text);
using Mat imgGray = new Mat();
Cv2.CvtColor(imgSrc, imgGray, ColorConversionCodes.BGR2GRAY);

using Mat imgDest = new Mat(imgGray.Size(), MatType.CV_32FC1);

Cv2.CornerHarris(imgGray, imgDest, blockSize, ksize, k);

using Mat imgNorm =new Mat();
Cv2.Normalize(imgDest, imgNorm, 0, 255, NormTypes.MinMax);

for (int i = 0; i < imgNorm.Rows; i++)
{
    for (int j = 0; j < imgNorm.Cols; j++)
    {
        if (imgNorm.At<float>(i, j) > thrould)
        {
            Cv2.Circle(imgSrc, j, i, 5, color);
        }
    }
}

Cv2.ImShow("角点检测", imgSrc);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文献:
[1]花12800买来的【OpenCV全套】教程,花费156个小时整理的OpenCV计算机视觉基础版全套视频教程,涵盖核心知识点,全程干货,无废话
[2]OpenCV3编程指南
[3]https://blog.csdn.net/holybin/article/details/40984955
[4]https://www.cnblogs.com/kbqLibrary/p/12482664.html

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 06:04:03       101 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 06:04:03       109 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 06:04:03       87 阅读
  4. Python语言-面向对象

    2024-07-22 06:04:03       96 阅读

热门阅读

  1. python多进程库(multiprocessing)

    2024-07-22 06:04:03       24 阅读
  2. python每日学习9:正则表达式

    2024-07-22 06:04:03       29 阅读
  3. Linux

    Linux

    2024-07-22 06:04:03      21 阅读
  4. 树上启发加点分治思想

    2024-07-22 06:04:03       24 阅读
  5. 配置文件格式 XML 快速上手

    2024-07-22 06:04:03       24 阅读