详解利用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运用于数据分析的简单教程
Mar 27 Python
分享一下Python数据分析常用的8款工具
Apr 29 Python
python实现简单加密解密机制
Mar 19 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
Aug 02 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
Python基于pygame实现单机版五子棋对战
Dec 26 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
如何用python处理excel表格
Jun 09 Python
python字符串的index和find的区别详解
Jun 20 Python
Python爬虫之爬取最新更新的小说网站
May 06 Python
Python必备技巧之函数的使用详解
Apr 04 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
20个PHP常用类库小结
2011/09/11 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
thinkphp5 路由分发原理
2021/03/18 PHP
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
本科毕业生自我鉴定
2013/11/02 职场文书
本科毕业生的求职信范文
2013/11/20 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
母婴店促销方案
2014/03/05 职场文书
2014年教学工作总结
2014/11/13 职场文书
全民创业工作总结
2015/08/13 职场文书
初一语文教学反思
2016/03/03 职场文书