Python OpenCV基于霍夫圈变换算法如何检测图像中的圆形
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下Python OpenCV基于霍夫圈变换算法如何检测图像中的圆形,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一
千家信息网最后更新 2026年11月03日Python OpenCV基于霍夫圈变换算法如何检测图像中的圆形
小编给大家分享一下Python OpenCV基于霍夫圈变换算法如何检测图像中的圆形,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
第一章:霍夫变换检测圆
① 实例演示1
这个是设定半径范围 0-50 后的效果。

② 实例演示2
这个是设定半径范围 50-70 后的效果,因为原图稍微大一点,半径也大了一些。

③ 霍夫变换函数解析
cv.HoughCircles() 方法
参数分别为:image、method、dp、minDist、param1、param2、minRadius、maxRadius
其中:
image 为灰度图像;
method 使用的方法为霍夫梯度法,目前已知的有 HOUGH_GRADIENT 和 HOUGH_GRADIENT_ALT 两种,后者的准确率会更高一点;
dp 为累加器分辨率与图片分辨率的反比。
minDist 为两个圆中心的最小距离;
param1 对于 CV_HOUGH_GRADIENT 表示传入 canny 边缘检测的阈值;
param2 对于 CV_HOUGH_GRADIENT 表示检测阶段圆心的累加阈值,值越小能检测出的圆越多,值越大的话就检测出来的少,但是检测出来的圆形相比于没检测出来的会更圆、更完美一些;
minRadius 为最小半径;
minRadius 为最大半径;
首先通过均值偏移滤波降噪来排除干扰的点,提高识别的准确率,然后进行灰度处理。
# 均值偏移滤波降噪处理mean_filter_img = cv.pyrMeanShiftFiltering(image, 10, 100)cv.imshow("mean_filter_img", mean_filter_img)# 图像灰度处理gray_img = cv.cvtColor(mean_filter_img, cv.COLOR_BGR2GRAY)# 霍夫圈变换# 参数分别为:image, method, dp, minDist, param1, param2, minRadius, maxRadius# 其中:image为灰度图像,method使用的方法为霍夫梯度法,minDist两个圆中心的最小距离circles = cv.HoughCircles(gray_img, cv.HOUGH_GRADIENT, 1, 30, param1=50, param2=30, minRadius=0, maxRadius=50)第二章:Python + opencv 完整检测代码
① 源代码
# -*- coding:utf-8 -*-# 2021-12-17# 作者:小蓝枣# opencv圆形检测import cv2 as cvimport numpy as npdef detect_circle(image): ''' 作用:圆形检测 参数:需要检测圆的图片 返回:检测出圆形的信息 ''' # 均值偏移滤波降噪处理 mean_filter_img = cv.pyrMeanShiftFiltering(image, 10, 100) cv.imshow("mean_filter_img", mean_filter_img) # 图像灰度处理 gray_img = cv.cvtColor(mean_filter_img, cv.COLOR_BGR2GRAY) # 霍夫圈变换 # 参数分别为:image, method, dp, minDist, param1, param2, minRadius, maxRadius # 其中:image为灰度图像,method使用的方法为霍夫梯度法,minDist两个圆中心的最小距离 circles = cv.HoughCircles(gray_img, cv.HOUGH_GRADIENT, 1, 30, param1=50, param2=30, minRadius=0, maxRadius=50) # 对数据进行取整 print("取整前信息:" + str(circles)) circles = np.uint16(np.around(circles)) print("取整后信息:" + str(circles)) return circles def draw_circle(img, circles): ''' 作用:根据圆形信息在图片中绘制圆 参数1:原始图片信息 参数2:圆形坐标信息 返回:无 ''' for i in circles[0, :]: # 绘制圆外圈 # 参数分别为:圆心、半径、颜色、线框宽度 cv.circle(img, (i[0], i[1]), i[2], (0, 0, 255), 2) # 绘制圆心 cv.circle(img, (i[0], i[1]), 2, (255, 0, 0), 2) cv.imshow("draw_circle_img", img)# 读取图片信息img = cv.imread("./image/meixi.jpg")# 设置窗口不可改变大小(参数包含:WINDOW_AUTOSIZE、WINDOW_NORMAL、WINDOW_OPENGL)cv.namedWindow("original image", cv.WINDOW_AUTOSIZE)cv.imshow("original image", img)# 检测圆circles = detect_circle(img)#绘制圆draw_circle(img, circles)cv.waitKey(0)cv.destroyAllWindows()② 运行效果图
原始图片:
降噪后效果:
霍夫变换检测圆处理后效果:
取整后效果图:
以上是"Python OpenCV基于霍夫圈变换算法如何检测图像中的圆形"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
检测
霍夫
圆形
参数
图像
变换
信息
半径
图片
效果
灰度
处理
最小
方法
别为
两个
圆心
均值
梯度
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技保险
互联网科技有限公司经营范围
新华互联网科技学院
互联网科技视频
鑫亿盛互联网科技
互联网科技股午盘股票涨跌
哈尔滨秒房互联网科技有限公司
青海省互联网新科技
互联网科技创新服务
互联网为啥属于高科技
互联网科技与大数据专业
苏州铭阳互联网科技有限公司
坤平互联网科技
互联网科技和信息
用友工业互联网科技发展
科技大学互联网
济南小医互联网科技有限公司招聘
数字互联网科技有限公司
承德科技产业互联网平台
高科技和互联网的现代国家
江苏根荣互联网科技
科技平台互联网
互联网金融 金融科技
青岛互联网科技公司
互联网与新科技
山东吉时兔互联网科技有限公司
博兴的互联网电子科技公司
互联网科技公司需要的职位
天津腾达互联网科技有限公司
长沙互联网科技