详解利用python+opencv识别图片中的圆形(霍夫变换)


Posted in Python onJuly 01, 2019

在图片中识别足球

先补充下霍夫圆变换的几个参数知识:

  1. dp,用来检测圆心的累加器图像的分辨率于输入图像之比的倒数,且此参数允许创建一个比输入图像分辨率低的累加器。上述文字不好理解的话,来看例子吧。例如,如果dp= 1时,累加器和输入图像具有相同的分辨率。如果dp=2,累加器便有输入图像一半那么大的宽度和高度。
  2. minDist,为霍夫变换检测到的圆的圆心之间的最小距离,即让我们的算法能明显区分的两个不同圆之间的最小距离。这个参数如果太小的话,多个相邻的圆可能被错误地检测成了一个重合的圆。反之,这个参数设置太大的话,某些圆就不能被检测出来了。
  3. param1,有默认值100。它是method设置的检测方法的对应的参数。对当前唯一的方法霍夫梯度法,它表示传递给canny边缘检测算子的高阈值,而低阈值为高阈值的一半。
  4. param2,也有默认值100。它是method设置的检测方法的对应的参数。对当前唯一的方法霍夫梯度法,它表示在检测阶段圆心的累加器阈值。它越小的话,就可以检测到更多根本不存在的圆,而它越大的话,能通过检测的圆就更加接近完美的圆形了。
  5. minRadius,默认值0,表示圆半径的最小值。
  6. maxRadius,也有默认值0,表示圆半径的最大值。

源代码:

# -*- coding: utf-8 -*- 
""" 
Created on Tue Sep 26 23:15:39 2017 
 
@author: tina 
""" 
import cv2 
import numpy as np 
import matplotlib.pyplot as plt 
 
img = cv2.imread('C:\\Users\\tina\\Pictures\\ahh\\ball.jpg') 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
 
plt.subplot(121),plt.imshow(gray,'gray') 
plt.xticks([]),plt.yticks([]) 
 
circles1 = cv2.HoughCircles(gray,cv2.HOUGH_GRADIENT,1, 
600,param1=100,param2=30,minRadius=80,maxRadius=97) 
circles = circles1[0,:,:] 
circles = np.uint16(np.around(circles)) 
for i in circles[:]:  
  cv2.circle(img,(i[0],i[1]),i[2],(255,0,0),5) 
  cv2.circle(img,(i[0],i[1]),2,(255,0,255),10) 
  cv2.rectangle(img,(i[0]-i[2],i[1]+i[2]),(i[0]+i[2],i[1]-i[2]),(255,255,0),5) 
   
print("圆心坐标",i[0],i[1]) 
plt.subplot(122),plt.imshow(img) 
plt.xticks([]),plt.yticks([])

原图:

详解利用python+opencv识别图片中的圆形(霍夫变换)

识别后效果:

详解利用python+opencv识别图片中的圆形(霍夫变换)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python标准库之随机数 (math包、random包)介绍
Nov 25 Python
Python实现的基数排序算法原理与用法实例分析
Nov 23 Python
python去除扩展名的实例讲解
Apr 23 Python
python高阶爬虫实战分析
Jul 29 Python
浅谈django url请求与数据库连接池的共享问题
Aug 29 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
python读取ini配置文件过程示范
Dec 23 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
Pytorch十九种损失函数的使用详解
Apr 29 Python
Python SQLAlchemy库的使用方法
Oct 13 Python
python中温度单位转换的实例方法
Dec 27 Python
使用python绘制分组对比柱状图
Apr 21 Python
在python里面运用多继承方法详解
Jul 01 #Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 #Python
用python打印1~20的整数实例讲解
Jul 01 #Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 #Python
python实现列表的排序方法分享
Jul 01 #Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 #Python
Python中字符串List按照长度排序
Jul 01 #Python
You might like
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php过滤表单提交的html等危险代码
2014/11/03 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
2015/05/29 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
Nuxt配合Node在实际生产中的应用详解
2018/08/07 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
如何用PHP实现邮件发送
2012/12/26 面试题
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
医科大学生毕业的自我评价分享
2013/11/12 职场文书
法人授权委托书
2014/04/03 职场文书
合作协议书范文
2014/08/20 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers