利用霍夫变换来进行圆环检测。

cv2中进行霍夫圆环检测的函数:

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

其中:

image:  输入 8位、单通道灰度图像如果使用RGB图像,需要先转换为Gray图像。

method:定义检测图像中圆的方法。目前唯一实现的方法是cv2.HOUGH_GRADIENT。

dp:累加器图像的分辨率。累加器分辨率与图像分辨率的反比。dp获取越大,累加器数组越小。比如若dp==1,那么累加器的分辨率与原图像一样,如果dp==2,那么累加器的分辨率只有原图像的一半。

minDist:两个不同圆之间的最小距离。如果minDist太小,则可能导致检测到多个相邻的圆。如果minDist太大,则可能导致很多圆检测不到。

param1:用于Canny的边缘阀值上限,下限被置为上限的一半。

param2:cv2.HOUGH_GRADIENT方法的累加器阈值。阈值越小,检测到的圆越多。圆心是通过投票得出的,这个值就是确定多少票才算是圆心这个问题的。基于圆心的最小投票数。

minRadius:最小圆半径(以像素为单位)。

maxRadius:最大圆半径(以像素为单位)。

import cv2
import numpy as np
from PIL import Image, ImageEnhanceimg = Image.open('2.jpg')
img = np.array(img)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 100, param1=100, param2=80, minRadius=100, maxRadius=200)
img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
# circles = np.uint16(np.around(circles))
if circles is not None:for i in circles[0, :]:cv2.circle(img, (i[0], i[1]), i[2], (0, 255, 0), 4)cv2.circle(img, (i[0], i[1]), 2, (0, 0, 255), 3)
cv2.imshow("hough circle ", img)
cv2.waitKey(0)

原始图片:

结果如下:

利用霍夫变换来进行圆环检测。相关推荐

  1. 利用霍夫变换做直线检测的原理及OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 霍夫变换的原理大家可以参考博文 霍夫变换_tie ...

  2. 深度学习和目标检测系列教程 20-300:OpenCV与图像处理:霍夫变换技术实现直线检测

    @Author:Runsen 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个參数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果. ...

  3. C++版本OpenCv教程(四十二)霍夫变换原理及直线检测

    霍夫变换(Hough Transform)是图像处理中检测是否存在直线的重要算法,该算法是由Paul Hough在1962年首次提出,最开始只能检测图像中的直线,但是霍夫变换经过不断的扩展和完善已经可 ...

  4. 利用RGB-D数据进行人体检测 带dataset

    利用RGB-D数据进行人体检测 LucianoSpinello, Kai O. Arras 摘要 人体检测是机器人和智能系统中的重要问题.之前的研究工作使用摄像机和2D或3D测距器.本文中我们提出一种 ...

  5. ICMP 隧道——将流量封装进 IMCP 的 ping 数据包中,旨在利用 ping 穿透防火墙的检测...

    利用 ICMP 隧道穿透防火墙 转自:http://xiaix.me/li-yong-icmp-sui-dao-chuan-tou-fang-huo-qiang/ 以前穿透防火墙总是使用 SSH 隧道 ...

  6. DL之SSD:基于tensorflow利用SSD算法实现目标检测(21类)

    DL之SSD:基于tensorflow利用SSD算法实现目标检测(21类) 目录 输出结果 SSD代码 输出结果 VOC_LABELS = {'none': (0, 'Background'),'ae ...

  7. Haar+Adaboost级联分类器分解(三):利用并查集合并检测结果窗口

    转载:http://www.aichengxu.com/view/1501260 前一篇文章分析了OpenCV级联分类器结构,即"强分类器串联,弱分类器并联",这一节我们来聊聊 ...

  8. 利用OpenCV实现人眼的检测与跟踪

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 本篇博文的基础是  利用OpenCV的级联分类器 ...

  9. 利用KD树进行异常检测

    什么是KD树 要说KD树,我们得先说一下什么是KNN算法. KNN是k-NearestNeighbor的简称,原理很简单:当你有一堆已经标注好的数据时,你知道哪些是正类,哪些是负类.当新拿到一个没有标 ...

最新文章

  1. ie 6 对注释标记的一个不稳定的错误
  2. leetcode-139-单词拆分
  3. HDU2612(BFS算法)
  4. cocos2d-x和objective-c中的retain()和release()
  5. VC6.0打开或者添加工程文件崩溃的解决方法
  6. 《坐热板凳》第八次团队作业:Alpha冲刺(第二天)
  7. linux远程桌面rdesktop,Linux下通过rdesktop连接Windows远程桌面
  8. U盘只读文件系统修复详解
  9. 第九篇:ROS的gazebo三维物理仿真环境联合使用
  10. ElasticSearch整合SpringBoot的API操作
  11. matlab 非线性常微分方程,Matlab数值求解非线性常微分方程 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  12. linux c openssl aes 加解密
  13. C语言/Python经典算法冒泡排序
  14. docker(6)容器的三剑客:docker machine、docker-compose、docker Swarm
  15. iview tooltip: true, 处理文字,溢出用点代替
  16. SPV与Paymail的结合将永久性地改变数字支付的体验
  17. 云服务器vCPU和CPU有什么区别?
  18. 『 高达 购物车案例 』jQuery + Java Script 全功能实现【超详细 代码分析】
  19. 无卡支付系统贴牌,app版本+h5版本
  20. 计算机会计信息系统中暂估存货的处理方法研究

热门文章

  1. SonicPrint: A Generally Adoptable and Secure Fingerprint Biometrics in Smart Devices
  2. UOS统信系统桌面变黑,什么都没有
  3. 综合设计一个OPPE主页--页面的底部
  4. f5负载均衡导致服务器响应,什么是F5负载均衡器,看完你就明白怎么回事了
  5. linux下tomcat中文乱码
  6. LoadFromStr的使用中出现错误“未结束的字符串常量”
  7. Django Rest Framework - 实例PartyDemo 之 增删改查
  8. eBay账号防关联的注意事项
  9. 气密测试内螺纹快速密封接头 格雷希尔快速连接器 G1/8 G1/4 G3/8 G1/2 G3/4内螺纹封堵接头
  10. Allegro172版本DFM规则之DFA spacing