2012-10-25 71 views
1

有什么方法可以准确检测opencv中的圆圈吗?我正在使用hough变换,它给了我很好的效果,但大多数时候,物体和周围的光线,光线等都会产生不好的效果,所以我在寻找除圆圈之外的选项,准确的检测对我的项目非常重要。如何准确检测圆圈

我到目前为止的基本方法是在实时拍摄的图像中找到一些球体。我用houghcircle找到球体,然后根据我得到的半径进行计算。

如果背景是简单的,没有任何问题,球体检测没有问题,但是如果我在我的房间拍摄背景中有其他物体的图像,通常很难检测到。所以我正在寻找其他方法。

+0

我们将链接到图像来帮助你(你有困难的例子)。另外,你不会告诉我们你具体尝试的是什么......我认为预处理对你的情况至关重要。 –

+0

@QuentinGeissmann好的,基本的方法是在图像中找到一些球体,所以我们用houghcircle找到它们,后来的计算就是从中得到的值,我的意思是半径。如果背景是简单的,没有任何问题可以毫无问题地检测到,那么假设我在我的房间里拍摄了这张图片,那里的背景会是我房间里的任何东西,在那种情况下,它通常很难被发现。所以我正在寻找其他一些 –

+0

@QuentinGeissmann也是我的项目,我必须实时拍摄图像surrondings。 –

回答

3

我有类似的需要找到圈acuratly和霍夫做关于精确检测只是一个非常小的工作。尝试使用。

  1. 轮廓检测,一旦你有你的轮廓绘制轮廓。
  2. 使用minEnclosingCircle在检测到的轮廓上绘制一个圆。
  3. 从轮廓可以得到半径和X,Y点

编辑:亦反对在周围的小物体可以使用ContourArea()进行过滤。 检查更小的轮廓,并消除

这应该比霍夫圆检测更好。祝你好运

1

由于Junxx提到照度不变会与我所遇到的大多数问题一起工作。像阴影,光线等,这可能对寻找这个答案的人有用。