import cv2
import numpy as np
# 圆的检测原理
# 霍夫梯度法:先确定圆心,再确定半径
# 把原图做一次 Canny 边缘检测,得到边缘检测的二值图。
# 圆的边缘点切线的垂直方向,也就是梯度方向过圆点,所以我们可以遍历图像的所有点,
# 对每个像素点计算梯度,比如Sobel算子,对该直线上的所有像素点进行投票,
# 最后选取超过阈值的某个像素点,为了避免选取过多的圆心,
# 可以把一个像素点周围相差不大的像素点看做成一个圆心,确定圆心后再计算以改点为圆心的最佳半径
# 该方法优点:速度快
# 缺点:圆心可能会有偏差,这个方法对噪声比较敏感,所以可以先做中值滤波,做完之后再用hough圆变换
# 总体流程:
# 1.加载一幅图像
# 2.执行高斯模糊以降低噪声:GaussianBlur
# 3.转成灰度图:cvtColor
# 4.执行霍夫圆变换:HoughCircles
# HoughCircles 函数参数解析
# image,输入图像,即源图像,需要为 8 位的灰度单通道图像。
# method,使用的检测方法,目前 OpenCV 中就霍夫梯度法一种可以使用,标识符为 HOUGH_GRADIENT。
# dp,累加面分辨率(大小) = 原始图像分辨率(大小) × 1/dp。默认 dp = 1 时,两者分辨率相同。
# minDist,两个圆心之间的最小距离。若两圆心距离 < minDist,则认为是同一个圆。
# param1,Canny 边缘检测的高阈值,低阈值被自动置为高阈值的一半,默认为 100。
# param2,累加平面某点是否是圆心的判定阈值。它越大,能通过检测的圆就更接近完美的圆形,默认为 100。
# minRadius,圆半径的最小值。默认为 0。
# maxRadius,圆半径的最大值,默认为 0。
# 展示图像,封装成函数
def cv_show_image(name, img
【opencv学习】【hough圆检测】
最新推荐文章于 2022-06-23 00:16:05 发布
这篇博客介绍了如何利用OpenCV的霍夫梯度法检测图像中的圆。首先,通过高斯模糊去除噪声,然后将图像转换为灰度图。接着,应用霍夫圆变换找到圆心和半径,并在图像上绘制检测到的圆。文章还详细解释了HoughCircles函数的参数,并展示了实际检测过程的效果图。

最低0.47元/天 解锁文章
2211

被折叠的 条评论
为什么被折叠?



