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实现统计代码行数的方法
May 22 Python
python实现贪吃蛇小游戏
Mar 21 Python
WxPython建立批量录入框窗口
Feb 27 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
python实现XML解析的方法解析
Nov 16 Python
Python 实现opencv所使用的图片格式与 base64 转换
Jan 09 Python
python入门之井字棋小游戏
Mar 05 Python
python小白学习包管理器pip安装
Jun 09 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
Jun 29 Python
如何更换python默认编辑器的背景色
Aug 10 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中strlen和mb_strlen的区别
2014/08/31 PHP
laravel安装和配置教程
2014/10/29 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
JavaScript闭包详解
2015/02/02 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
详解JS模块导入导出
2017/12/20 Javascript
vue组件name的作用小结
2018/05/23 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python远程连接服务器MySQL数据库
2018/07/02 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
python3转换code128条形码的方法
2019/04/17 Python
Python实现把类当做字典来访问
2019/12/16 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
HSRP的含义以及如何工作
2014/09/10 面试题
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
社区义诊通知
2015/04/24 职场文书