详解利用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 相关文章推荐
pycharm 使用心得(二)设置字体大小
Jun 05 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
Python WXPY实现微信监控报警功能的代码
Oct 20 Python
一些Centos Python 生产环境的部署命令(推荐)
May 07 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
详解python实现小波变换的一个简单例子
Jul 18 Python
python异常触发及自定义异常类解析
Aug 06 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
python生成随机红包的实例写法
Sep 02 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
python如何实现DES加密
Sep 21 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 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 循环列出目录内容的函数代码
2010/05/26 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
农历与西历对照
2006/09/06 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
详解Python的Django框架中的中间件
2015/07/24 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
python按比例随机切分数据的实现
2019/07/11 Python
python获取array中指定元素的示例
2019/11/26 Python
python实现拼图小游戏
2020/02/22 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
MYSQL基础面试题
2012/05/13 面试题
文史专业毕业生自荐信
2013/11/17 职场文书
在校学生职业规划范文
2014/01/08 职场文书
求职简历的自我评价
2014/01/31 职场文书
乡镇庆八一活动方案
2014/02/02 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
客户经理岗位职责
2015/01/31 职场文书
计算机专业自荐信
2015/03/05 职场文书
归途列车观后感
2015/06/17 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
MySQL读取JSON转换的方式
2022/03/18 MySQL