【问题标题】:cvHoughCircles() parameters in JavaCV?JavaCV中的cvHoughCircles()参数?
【发布时间】:2015-03-18 11:37:04
【问题描述】:

我想使用 cvHoughCircles() 在图像中查找圆圈。 但是我对第四个参数感到困惑,因为当我使用“1”时,cvHoughCircles() 找不到圆圈,而当我使用“2”时,该方法可以正常工作并检测图像中的所有圆圈。

Click Here 查看我的程序在这两种情况下的屏幕截图。

我在另一个图像上做了同样的操作,但是这次将第四个参数的值从 1 更改为 2,并没有影响结果[cvHoughCircles() 在两种情况下返回相同的结果(使用 1 或 2第四个参数的值)]。

谁能告诉我在处理不同图像时第四个参数应该使用什么值?

【问题讨论】:

    标签: opencv javacv


    【解决方案1】:

    查看此链接:

    http://docs.opencv.org/modules/imgproc/doc/feature_detection.html

    它列出了所有函数的 c/c++/python 实现,说明了每个参数的作用,我一直发现其中一个是 javacv 一直在包装的(在本例中是 c 代码)。当我看到你的帖子时,我实际上正在寻找这个页面,所以如果它再次发生,我现在可以点击我自己的链接(太棒了!)。现在尽我所能回答您的问题。

    函数如下所示:

    CvSeq* cvHoughCircles(CvArr* image, void* circle_storage, int method, double dp, double min_dist, double param1=100, double param2=100, int min_radius=0, int max_radius=0 )
    

    网站描述的地方:

    dp – 累加器分辨率与图像分辨率的反比。例如,如果 dp=1 ,则累加器具有与输入图像相同的分辨率。如果 dp=2 ,累加器的宽度和高度只有一半。

    猜测(根据我在课堂上的记忆)这指的是有时用于特征检测的金字塔方案。基本上,您平均图像的像素以获得较小的图像,以便找到重要特征的位置,例如角落或在这种情况下最终基于梯度信息的圆圈(因此应该是黑白或灰度图像使用)。

    使用 dp=1 应该完全没问题,但只需确保在图像上调用 cvSmooth() 以便梯度向量围绕圆圈形成一个漂亮的圆圈。如果您知道有一个圆圈,那么您可以继续平滑和扩张 (cvDilate) 直到圆圈出现,但随后您可能会检测到伪影,因此应该对最大的圆圈感兴趣。最后,这取决于您使用算法的情况。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多