详解利用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实现动态添加类的属性或成员函数的解决方法
Jul 16 Python
详解Python中列表和元祖的使用方法
Apr 25 Python
在Python中使用SQLite的简单教程
Apr 29 Python
简单解析Django框架中的表单验证
Jul 17 Python
python数据挖掘需要学的内容
Jun 23 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
python实现动态数组的示例代码
Jul 15 Python
解决Python中回文数和质数的问题
Nov 24 Python
Python调用REST API接口的几种方式汇总
Oct 19 Python
Selenium 安装和简单使用的实现
Dec 04 Python
Python 多线程之threading 模块的使用
Apr 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
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
小程序云开发实战小结
2018/10/25 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
Django框架视图介绍与使用详解
2019/07/18 Python
python os.fork() 循环输出方法
2019/08/08 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
酒店中秋节促销方案
2014/01/30 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
环保志愿者活动方案
2014/08/14 职场文书
三问三解心得体会
2014/09/05 职场文书
酒店开业主持词
2015/07/02 职场文书
Python学习之异常中的finally使用详解
2022/03/16 Python
Java设计模式中的命令模式
2022/04/28 Java/Android