【问题标题】:How to count number of Corners in an image?如何计算图像中的角数?
【发布时间】:2016-01-08 03:13:58
【问题描述】:

我想计算计算机图像(使用 Microsoft Paint 等工具创建的简单图像)中的角点数。例如,如果我画了一张正方形的图片,我希望程序返回角的数量,在本例中为 4。

我在 Microsoft Visual Studio 2012 中使用 Open CV 2.4.11 for C++。

我使用了 Harris Corner 检测器来显示图像中的角。这是我用于程序的教程:http://docs.opencv.org/2.4/doc/tutorials/features2d/trackingmotion/harris_detector/harris_detector.html

另外,我想知道如何找到边缘的端点(而不是角)?例如,如果图像包含线段,程序应返回端点数为 2。我应该使用什么函数?

请解决此查询。我将在项目中使用此功能。

非常感谢您提前提供的帮助。

P.S:我是 OpenCV 的学生和初学者。

【问题讨论】:

    标签: c++ opencv visual-studio-2012 image-processing computer-vision


    【解决方案1】:

    如果输入是简单的计算机生成图像,一个可行的选择是使用阈值和轮廓检测。

    一旦您提取了轮廓(作为点向量),您就可以使用approxPolyDP 函数来近似检测到的轮廓(达到用户定义的精度)。近似后,输出轮廓中的点数是角的数量(或在开放轮廓的情况下为端点)。

    总而言之,您需要的 OpenCV 函数是: threshold, findContoursapproxPolyDP

    【讨论】:

      【解决方案2】:

      要计算角,您可以使用链接中提供的代码 sn-p 在角上绘制圆圈(有一些小改动)

      int thresh = 200;
      int corner_count = 0;
      
      for (int j=0; j<dst_norm.rows; j++) { 
        for (int i=0; i<dst_norm.cols; i++) {
          if ((int)dst_norm.at<float>(j,i) > thresh) {
            corner_count++;
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-12-27
        • 2021-03-02
        • 1970-01-01
        • 1970-01-01
        • 2014-04-02
        • 1970-01-01
        • 2011-05-11
        • 2015-10-12
        • 2019-06-04
        相关资源
        最近更新 更多