详解利用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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
python实时检测键盘输入函数的示例
Jul 17 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
Apr 16 Python
Django设置Postgresql的操作
May 14 Python
Python中SQLite如何使用
May 27 Python
Python基于execjs运行js过程解析
Nov 27 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
Jan 28 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
ajax缓存问题解决途径
2006/12/06 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
JavaScript自定义超时API代码实例
2020/04/30 Javascript
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
python保存数据到本地文件的方法
2018/06/23 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
NumPy排序的实现
2020/01/21 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
社区科普工作方案
2014/06/03 职场文书
好的促销活动方案
2014/08/21 职场文书
演讲比赛主持词
2015/06/29 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript