内容来自OpenCV-Python Tutorials 自己翻译整理

目标:

使用霍夫变换在图像中寻找圆
使用函数cv2.HoughCircles()

原理:

圆形的表达式为(x−xcenter)2+(y−ycenter)2=r2(x-x_{center})^2+(y-y_{center})^2=r^2,一个圆环的确定需要三个参数。那么霍夫变换的累加器必须是三维的,但是这样的计算效率很低。
这里opencv中使用霍夫梯度的方法,这里利用了边界的梯度信息。

首先对图像进行canny边缘检测,对边缘中的每一个非0点,通过Sobel算法计算局部梯度。那么计算得到的梯度方向,实际上就是圆切线的法线。三条法线即可确定一个圆心,同理在累加器中对圆心通过的法线进行累加,就得到了圆环的判定。

cv2.HoughCircles函数的参数

cv2.HoughCircles(image, method, dp, minDist, circles, param1, param2, minRadius, maxRadius)

image为输入图像,需要灰度图

method为检测方法,常用CV_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('19.jpg',0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,100,param1=100,param2=30,minRadius=100,maxRadius=200)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('detected circles',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

python opencv入门 Hough圆变换(28)相关推荐

  1. python opencv之 Hough圆变换

    原博客地址:https://blog.csdn.net/tengfei461807914/article/details/77507820 https://blog.csdn.net/Tina_Wei ...

  2. Python+OpenCV:Hough圆检测(Hough Circle Transform)

    Python+OpenCV:Hough圆检测(Hough Circle Transform) ##################################################### ...

  3. Python+OpenCV:Hough直线检测(Hough Line Transform)

    Python+OpenCV:Hough直线检测(Hough Line Transform) 理论 A line can be represented as  or in a parametric fo ...

  4. python——opencv入门(一)

    1. OpenCV的结构 和Python一样,当前的OpenCV也有两个大版本,OpenCV2和OpenCV3.相比OpenCV2,OpenCV3提供了更强的功能和更多方便的特性.不过考虑到和深度学习 ...

  5. python opencv入门 光流法(41)

    内容来自OpenCV-Python Tutorials 自己翻译整理 目标: 了解光流的概念,使用lucas-kanade估算方法 使用cv2.calcOpticalFlowPyrLK() 方法来追踪 ...

  6. python OpenCV 入门教程等你来取

    虽然python 很强大,而且也有自己的图像处理库PIL,但是相对于OpenCV 来讲,OpenCV更加强大, 可以做更多更复杂的应用,比如人脸识别等.跟很多开源软件一样OpenCV 也提供了完善的p ...

  7. python opencv 入门 绘图函数 (3)

    内容来自OpenCV-Python Tutorials 自己翻译整理 目标: 使用opencv画几何图形 学习如下函数 cv2.line(), cv2.circle() , cv2.rectangle ...

  8. python openCv 入门学习-RGB转HSV、掩膜的简单理解(二)

    前言 RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色 混合而成.然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV(色 调 Hue, 饱和度 ...

  9. python opencv入门 Meanshift 和 Camshift 算法(40)

    内容来自OpenCV-Python Tutorials 自己翻译整理 目标: 在本章,学习Meanshift算法和Camshift算法来寻找和追踪视频中的目标物体. Meanshift算法: mean ...

最新文章

  1. 基于OpenCV的显著图绘制
  2. 高糊视频秒变4K!Facebook发布低分辨率视频实时渲染算法,网友:是好东西,但是玩不起...
  3. 关于Jquery中ajax方法data参数用法
  4. 第四范式携手智源研究院 共推全球最大智能模型应用发展
  5. Window10/Linux 下安装 scrapy (twisted 安装失败的解决办法 )
  6. 《修改winXP pro安装界面》 、《修改winXP pro开机画面》、《修改winXP pro登录画面》...
  7. mybatis+spring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationException
  8. Zookeeper之session的基本原理
  9. html5 网页宽度100,HTML5 Canvas 100%视口宽度?
  10. 排序算法Java实现(快速排序)
  11. 科大讯飞独家Founding赞助国际语音顶会,14篇论文被收录
  12. 常量指针(指向常量的指针)和指针常量
  13. 三角函数π/2转化_高中诱导公式全集,有了它,三角函数公式一网打尽
  14. C#chart控件如何同时显示两条曲线?
  15. 美颜SDK是什么?美颜SDK和美颜APP有什么区别?
  16. 数据库候选关键词怎么求_数据库中候选码求法.(比较全的哦)
  17. SQL Server密码破解工具简介
  18. s-tui:在 Linux 中监控 CPU 温度、频率、功率和使用率的终端工具
  19. BIOS IDE 改 AHCI
  20. 人工智能如何加速共享无人驾驶产业发展?

热门文章

  1. android Installation error: INSTALL_FAILED_CONTAINER_ERROR
  2. Ubuntu18.04搭建AirSim+ROS仿真环境
  3. flask基础十四之wtf表单
  4. adb 查看手机代号
  5. 全网最全的 Java 面试题汇总,爱了~
  6. CH4 - Python开发技术—流程控制之分支结构 (头歌)
  7. 手把手教你怎么用Python pip怎么升级pip?
  8. Flutter 拨打电话
  9. c 密解密java文件_c语言的des加密,怎么用java解密
  10. 6大行数字人民币推送子钱包扩大使用范围