python+opencv识别图片中的圆形


Posted in Python onMarch 25, 2020

本文实例为大家分享了python+opencv识别图片中足球的方法,供大家参考,具体内容如下

先补充下霍夫圆变换的几个参数知识:

  • dp,用来检测圆心的累加器图像的分辨率于输入图像之比的倒数,且此参数允许创建一个比输入图像分辨率低的累加器。上述文字不好理解的话,来看例子吧。例如,如果dp= 1时,累加器和输入图像具有相同的分辨率。如果dp=2,累加器便有输入图像一半那么大的宽度和高度。
  • minDist,为霍夫变换检测到的圆的圆心之间的最小距离,即让我们的算法能明显区分的两个不同圆之间的最小距离。这个参数如果太小的话,多个相邻的圆可能被错误地检测成了一个重合的圆。反之,这个参数设置太大的话,某些圆就不能被检测出来了。
  • param1,有默认值100。它是method设置的检测方法的对应的参数。对当前唯一的方法霍夫梯度法,它表示传递给canny边缘检测算子的高阈值,而低阈值为高阈值的一半。
  • param2,也有默认值100。它是method设置的检测方法的对应的参数。对当前唯一的方法霍夫梯度法,它表示在检测阶段圆心的累加器阈值。它越小的话,就可以检测到更多根本不存在的圆,而它越大的话,能通过检测的圆就更加接近完美的圆形了。
  • minRadius,默认值0,表示圆半径的最小值。
  • 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 相关文章推荐
Python实现的几个常用排序算法实例
Jun 16 Python
探寻python多线程ctrl+c退出问题解决方案
Oct 23 Python
Python中使用HTMLParser解析html实例
Feb 08 Python
Python最长公共子串算法实例
Mar 07 Python
python字典排序实例详解
May 20 Python
Python基于checksum计算文件是否相同的方法
Jul 09 Python
python中子类继承父类的__init__方法实例
Dec 15 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
Python实现注册、登录小程序功能
Sep 21 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
如何在pycharm中安装第三方包
Oct 27 Python
python中的内置函数max()和min()及mas()函数的高级用法
Mar 29 #Python
python学习入门细节知识点
Mar 29 #Python
Python实现加载及解析properties配置文件的方法
Mar 29 #Python
Python读取properties配置文件操作示例
Mar 29 #Python
Python实现读取Properties配置文件的方法
Mar 29 #Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 #Python
教你使用python画一朵花送女朋友
Mar 29 #Python
You might like
PHP系列学习之日期函数使用介绍
2012/08/18 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
Python生成随机数组的方法小结
2017/04/15 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
Django 使用logging打印日志的实例
2018/04/28 Python
django解决跨域请求的问题
2018/11/11 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
部队学习十八大感言
2014/01/11 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
标准单位租车协议书
2014/09/23 职场文书
大学生毕业个人总结
2015/02/15 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python