欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

OpenCV霍夫圆变换cv2.HoughCircles()

程序员文章站 2024-01-13 13:41:46
目录这篇博客将学习如何使用霍夫圆变换在图像中找到圆圈,opencv使用cv2.houghcircles()实现霍夫圆变换。circles = cv2.houghcircles(img,cv2.houg...

这篇博客将学习如何使用霍夫圆变换在图像中找到圆圈,opencv使用cv2.houghcircles()实现霍夫圆变换。

circles = cv2.houghcircles(img,
cv2.hough_gradient, 1, 20,
param1=50, param2=40, minradius=25, maxradius=0)

img: 待检测的灰度图cv2.hough_gradient:检测的方法,霍夫梯度1:检测的圆与原始图像具有相同的大小,dp=2,检测的圆是原始图像的一半20:检测到的相邻圆的中心的最小距离(如果参数太小,除了一个真实的圆外,还可能会错误地检测到多个相邻圆。如果太大,可能会漏掉一些圆。)param1:在#houghŠu梯度的情况下,它是较高的. 两个阈值传递到canny边缘检测器(较低的一个小两倍)。param2:在#houghŠu梯度的情况下,它是检测阶段圆心的累加器阈值。它越小,就越可能检测到假圆;minradius:最小圆半径maxradius:最大圆半径,如果<=0,则使用最大图像尺寸。如果<0,则返回没有找到半径的中心。

1. 效果图

原始图 vs 检测圆效果图如下:

如下右图可以看到3个外侧圆绿色,圆心红色被成功检测到;

OpenCV霍夫圆变换cv2.HoughCircles()

圆的最小半径设置由25调整为10,也可能会错误的检测到圆,效果图如下:

OpenCV霍夫圆变换cv2.HoughCircles()

检测圆半径的阈值(param2设置35)的结果,最小圆半径设置10,也可能会错误的检测到圆,效果图如下:

OpenCV霍夫圆变换cv2.HoughCircles()

2. 源码

参考

到此这篇关于opencv霍夫圆变换cv2.houghcircles()的文章就介绍到这了,更多相关opencv霍夫圆变换内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!