opencv - 如何去除错误检测?

标签 opencv image-processing

我正在使用 OpenCV 来检测二值图像中的椭圆,如下所示。在图像中,有八个椭圆需要检测。我可以使用 findContours 获得很多轮廓,包括八个椭圆。问题是:如何判断哪个是椭圆哪个不是?如何删除所有其他错误检测?

enter image description here enter image description here

最佳答案

在此特定情况下,Hough Circle Transform可能是最简单的解决方案。

从教程中复制代码并将cv::HoughCircles()的参数更改为:

/// Apply the Hough Transform to find the circles
HoughCircles( src_gray, circles, CV_HOUGH_GRADIENT, 1, 10, 40, 30, 0, 0 );

输出:

enter image description here

但我喜欢@George 的想法,接受它,它比指定硬编码常量更健壮。我的方法非常适用于此图像,但如果您的图像具有不同大小的圆圈和其他东西,则需要使用 cv::minEnclosingCircle()

关于opencv - 如何去除错误检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16032344/

相关文章:

c++ - 将 Magick::Image 转换为 cv::Mat

c++ - opencv c++比较不同图像中的关键点位置

image-processing - 图像边缘和梯度之间的关系是什么?

r - 计算二进制图像的圆度

两个自变量(x,y 坐标)的带约束条件的 Matlab 最小二乘近似

python - Python cv2.imread返回 'NoneType'对象没有属性 'shape'

c++ - 在 ubuntu 中使用 cuda 支持构建 opencv 3.1.0 的问题

c++ - VS 2013 OpenCV错误: Cannot find or open the PDB file

java - 识别位图中的 Logo - android

android - 图像处理 : Soft-Light algorithm like Photoshop