详解利用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 变量类型及命名规则介绍
Jun 08 Python
python在windows下实现备份程序实例
Jul 04 Python
python通过正则查找微博@(at)用户的方法
Mar 13 Python
Python中的下划线详解
Jun 24 Python
在Python的Django框架中显示对象子集的方法
Jul 21 Python
Python wxPython库Core组件BoxSizer用法示例
Sep 03 Python
Python中常用的高阶函数实例详解
Feb 21 Python
python3 sorted 如何实现自定义排序标准
Mar 12 Python
Python descriptor(描述符)的实现
Nov 15 Python
python批量提取图片信息并保存的实现
Feb 05 Python
python基础之错误和异常处理
Oct 24 Python
Python 读取千万级数据自动写入 MySQL 数据库
Jun 28 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
如何在PHP中使用Oracle数据库(6)
2006/10/09 PHP
php中常用编辑器推荐
2007/01/02 PHP
PHP 实用代码收集
2010/01/22 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
YII框架常用技巧总结
2019/04/27 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
js Calender控件使用详解
2015/01/05 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
React组件refs的使用详解
2018/02/09 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
Python制作刷网页流量工具
2017/04/23 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
Django重设Admin密码过程解析
2020/02/10 Python
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
质检部岗位职责
2013/11/11 职场文书
安全生产责任书
2014/03/12 职场文书
学校三节实施方案
2014/06/09 职场文书
法制教育演讲稿
2014/09/10 职场文书
借条如何写
2015/05/26 职场文书
《给予树》教学反思
2016/03/03 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers