详解利用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实现颜色rgb和hex相互转换的函数
Mar 19 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
Python3.5 处理文本txt,删除不需要的行方法
Dec 10 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
python实现抖音点赞功能
Apr 07 Python
python模拟菜刀反弹shell绕过限制【推荐】
Jun 25 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
Python将string转换到float的实例方法
Jul 29 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
TensorFlow tf.nn.max_pool实现池化操作方式
Jan 04 Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 Python
Elasticsearch 批量操作
Apr 19 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
用ODBC的分页显示
2006/10/09 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
使用PHP编写发红包程序
2015/07/22 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
javascript的offset、client、scroll使用方法详解
2012/12/25 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
python字典多键值及重复键值的使用方法(详解)
2016/10/31 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
Python文件操作基础流程解析
2020/03/19 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
python 实现aes256加密
2020/11/27 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
人事主管岗位职责范本
2013/12/04 职场文书
经理管理专业自荐信范文
2013/12/31 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
师德师风个人总结
2015/02/06 职场文书
2015年保管员工作总结
2015/04/30 职场文书
Python OpenCV之常用滤波器使用详解
2022/04/07 Python