学习目标

在本章中,将学习

  • 使用霍夫变换来查找图像中的圆
  • 函数:cv2.HoughCircles()

理论

圆在数学上表示为(x−xcenter)2+(y−ycenter)2=r2( x − x_{center}) ^2 + ( y − y_{center})^ 2 = r^ 2(x−xcenter​)2+(y−ycenter​)2=r2,其中(xcenter,ycenter)(x_{center}, y_{center})(xcenter​,ycenter​)是圆的中心,r是圆的半径。从等式中,可以看到我们有3个参数,因此需要3D累加器进行霍夫变换,这是非常低效的。因此,OpenCV使用更加技巧性的方法,即使用边缘的梯度信息的Hough梯度方法

OpenCv中实现的函数是cv2.HoughCircles()。它有很多参数。

circles = cv.HoughCircles( image, method, dp, minDist[, circles[, param1[, param2[, minRadius[, maxRadius]]]]] )

  • image: 8-bit灰度输入图
  • circles:输出找到的圆. 3 or 4 element floating-point vector (x,y,radius) or (x,y,radius,votes) .
  • method:检测方法 HOUGH_GRADIENT
  • dp:检测内侧圆心的累加器图像的分辨率于输入图像之比的倒数, 如dp=1,累加器和输入图像具有相同的分辨率,如果dp=2,累计器便有输入图像一半那么大的宽度和高度.
  • minDist: 表示两个圆之间圆心的最小距离.
  • param1:默认值100,它是method设置的检测方法的对应的参数,对当前唯一的方法霍夫梯度法cv2.HOUGH_GRADIENT,它表示传递给canny边缘检测算子的高阈值,而低阈值为高阈值的一半
  • param2:默认值100,它是method设置的检测方法的对应的参数,对当前唯一的方法霍夫梯度法cv2.HOUGH_GRADIENT,它表示在检测阶段圆心的累加器阈值,它越小,就越可以检测到更多根本不存在的圆,而它越大的话,能通过检测的圆就更加接近完美的圆形了
  • minRadius:默认值0,圆半径的最小值
  • maxRadius:默认值0,圆半径的最大值

例子:

import cv2
import numpy as npimg = cv2.imread('origin.png', 0)
img = cv2.medianBlur(img, 5)
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 10, param1=50, param2=30, minRadius=0, maxRadius=0)
# param2越小,能找到的圆更多,circles = np.uint16(np.around(circles))
for i in circles[0,:]:# draw the outer circlecv2.circle(cimg, (i[0],i[1]), i[2], (0,255,0), 2)# draw the center of the circlecv2.circle(cimg, (i[0], i[1]), 2, (0, 0, 255), 3)cv2.imshow('circle', cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果如下:

附加资源

  • https://docs.opencv.org/4.1.2/da/d53/tutorial_py_houghcircles.html
  • https://docs.opencv.org/4.1.2/dd/d1a/group__imgproc__feature.html#ga47849c3be0d0406ad3ca45db65a25d2d
  • https://www.cnblogs.com/jsxyhelu/p/13191015.html

opencv27:霍夫圆变换相关推荐

  1. Python,OpenCV中的霍夫圆变换——cv2.HoughCircles()

    Python,OpenCV中的霍夫圆变换 1. 效果图 2. 源码 参考 这篇博客将学习如何使用霍夫圆变换在图像中找到圆圈,OpenCV使用cv2.HoughCircles()实现霍夫圆变换. cir ...

  2. OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    本篇文章中,我们一起探讨了OpenCV中霍夫变换相关的知识点,以及了解了OpenCV中实现霍夫线变换的HoughLines.HoughLinesP函数的使用方法,实现霍夫圆变换的HoughCircle ...

  3. OpenCV之imgproc 模块. 图像处理(3)霍夫线变换 霍夫圆变换 Remapping 重映射 仿射变换

    霍夫线变换 目标 在这个部分您将学习到: 使用OpenCV的以下函数 HoughLines 和 HoughLinesP 来检测图像中的直线. 原理 Note 以下原理的说明来自书籍 学习OpenCV  ...

  4. OpenCV 霍夫圆变换Hough Circle Transform

    OpenCV 霍夫圆变换Hough Circle Transform 霍夫圆变换Hough Circle Transform 目标 理论 霍夫圆变换 这个程序做什么? 代码 解释 加载图像: 将其转换 ...

  5. 【opencv】——钢管计数(霍夫圆变换 + 阈值 + canny)

    目录 方法一:霍夫圆变换 + canny 方法二 阈值 + 寻边 对图中的钢管进行计数 方法一:霍夫圆变换 + canny # 霍夫圆变换,主要是要将参数调整好 def method1():img = ...

  6. OpenCV3学习(6.2)——霍夫(Hough)变换:霍夫线变换HoughLine,霍夫圆变换HoughCircles

    霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等).最基本的霍夫变换是从黑白图像中检测直线(线段) ...

  7. 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...

  8. OpenCV3之——霍夫变换(霍夫线变换和霍夫圆变换)

    霍夫变换 本文章参考@浅墨_毛星云的博客.转载请注明出处. 参考链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 写作当前博文 ...

  9. 缺点 霍夫圆_霍夫圆变换

    对于直线来说,一条直线能有参数极径级角表示,而对圆来说我们需要三个参数来表示一个圆 在OpenCV中,我们常常通过一个叫"霍夫梯度法"的方法来解决圆变换的问题. 霍夫梯度法的原理 ...

最新文章

  1. python学习07
  2. (一)ubuntu 12.04 安装php5.5
  3. 「我要出轨了」!伯克利的这个AI,可以预测机器人何时将脱离
  4. candy算子python_Python-计算机视觉中的Canny边缘检测方法
  5. c语言中一百以内相乘的积,一百以内的加减乘除法游戏....
  6. hybris backoffice创建product遇到的synchronization问题和解答
  7. vCenter 升级错误 VCSServiceManager 1603
  8. 火遍全网,却被广东人嫌弃!昔日“百亿网红”,快被打回原形了
  9. 学计算机是为了什么演讲稿,求大学计算机协会职位申请书和演讲稿
  10. python学来干什么-学python出来到底能干嘛
  11. 五个 Linux 下用户空间的调试工具
  12. mPaSS小程序 路由跳转
  13. Protel99SE精彩教程
  14. 温哥华岛大学计算机科学,温哥华有哪些知名大学排名(温哥华地区大学排名一览)...
  15. 自动化测试运维|Selenuim IDE使用Firefox
  16. stm32语音识别文字显示_『开源项目』基于STM32的智能垃圾桶之语音识别
  17. 微信自定义分享网页标题及内容
  18. Linux进程信号(产生、保存、处理)/可重入函数概念/volatile理解/SIGCHLD信号
  19. Vue.js 写一个echarts的水滴图
  20. 你知道如何判定一个大整数为素数吗?——米勒拉宾素数判定算法

热门文章

  1. 【大数据】《红楼梦》作者分析(QDU)
  2. 中国各地商人性格大曝光
  3. 让win7笔记本变成热点
  4. 性能优化专题 - JVM 性能优化 - 04 - GC算法与调优
  5. 漫反射:兰伯特和半兰伯特
  6. 盛银消费金融:年报亮眼背后,资产规模或限制持续增长
  7. 程序员是青春饭吗?30岁后的发展方向和突破
  8. sio.savemat得到空struct解决方法
  9. 本土微电子走向成功策略分析
  10. pandorabox php,Openwrt Pandorabox 挂载摄像头 定时拍照上传百度网盘,实现实时监控(优酷路由宝)...