详解利用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 14 Python
利用python将pdf输出为txt的实例讲解
Apr 23 Python
python实现log日志的示例代码
Apr 28 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
python实现两个文件夹的同步
Aug 29 Python
Python 获取指定文件夹下的目录和文件的实现
Aug 30 Python
python 字段拆分详解
Dec 17 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
Apr 22 Python
在 Python 中使用 MQTT的方法
Aug 18 Python
python 制作一个gui界面的翻译工具
May 14 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 单引号与双引号的区别
2009/11/24 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
php目录拷贝实现方法
2015/07/10 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
Python中的pprint折腾记
2015/01/21 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
详解django2中关于时间处理策略
2019/03/06 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
python os.fork() 循环输出方法
2019/08/08 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
软件配置管理有什么好处
2015/04/15 面试题
俞敏洪一分钟演讲稿
2014/08/26 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
爱心募捐感谢信
2015/01/22 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
班主任培训研修日志
2015/11/13 职场文书
辞职申请书范本
2019/05/20 职场文书
python实战之用emoji表情生成文字
2021/05/08 Python
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS