详解利用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 相关文章推荐
python3使用urllib示例取googletranslate(谷歌翻译)
Jan 23 Python
Python判断文本中消息重复次数的方法
Apr 27 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
python selenium操作cookie的实现
Mar 18 Python
利用pyecharts读取csv并进行数据统计可视化的实现
Apr 17 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
pycharm debug 断点调试心得分享
Apr 16 Python
python turtle绘图命令及案例
Nov 23 Python
图神经网络GNN算法
May 11 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和ACCESS写聊天室(六)
2006/10/09 PHP
php数据库密码的找回的步骤
2011/01/12 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
python3 简单实现组合设计模式
2020/07/02 Python
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
高级Java程序员面试题
2016/06/23 面试题
2014年教师节寄语
2014/08/11 职场文书
专业见习报告范文
2014/11/03 职场文书
企业2014年度工作总结
2014/12/10 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
人生感悟经典句子
2019/08/20 职场文书