python+opencv识别图片中的圆形

本文实例为大家分享了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实现图片批量剪切示例
  • Python实现图片尺寸缩放脚本
  • python tensorflow学习之识别单张图片的实现的示例
  • 用python实现对比两张图片的不同
  • Python实现识别手写数字 Python图片读入与处理
  • python使用Image处理图片常用技巧分析
  • python实现读取并显示图片的两种方法
  • python实现识别相似图片小结
  • Python实现拼接多张图片的方法
  • Python+Opencv识别两张相似图片
  • Ubuntu下使用Python实现游戏制作中的切分图片功能
(0)

相关推荐

  • Python实现图片尺寸缩放脚本

    最近由于网站对图片尺寸的需要,用python写了个小脚本,方便进行图片尺寸的一些调整,特记录如下: # coding=utf-8 import Image import shutil import os class Graphics: infile = 'D:\\myimg.jpg' outfile = 'D:\\adjust_img.jpg' @classmethod def fixed_size(cls, width, height): """按照固定尺寸处理图片&quo

  • python实现图片批量剪切示例

    复制代码 代码如下: import osfrom PIL import Image #批量剪切目录下图片for j in range(10,121):    p = 'C:/'+str(j)+'/'   #图片目录  #  print p    a = os.listdir(p) for i in a:        path = p+i        print path    #图片名称        try:            f = Image.open(path)    #   

  • Python实现识别手写数字 Python图片读入与处理

    写在前面 在上一篇文章Python徒手实现手写数字识别-大纲中,我们已经讲过了我们想要写的全部思路,所以我们不再说全部的思路. 我这一次将图片的读入与处理的代码写了一下,和大纲写的过程一样,这一段代码分为以下几个部分: 读入图片: 将图片读取为灰度值矩阵: 图片背景去噪: 切割图片,得到手写数字的最小矩阵: 拉伸/压缩图片,得到标准大小为100x100大小矩阵: 将图片拉为1x10000大小向量,存入训练矩阵中. 所以下面将会对这几个函数进行详解. 代码分析 基础内容 首先我们现在最前面定义基础

  • Python实现拼接多张图片的方法

    本文实例讲述了Python实现拼接多张图片的方法.分享给大家供大家参考.具体分析如下:   这里所述计划实现如下操作:   ① 用Latex写原始博文,生成PDF文档; ② 将PDF转成高清的PNG格式的图片; ③ 将多个PNG格式的图片合并成一大张图片; ④ 将最终的大图片直接上传到博文编辑器中 好了,如果将PDF文档转换成其他的图片格式呢?我建议windowns下可用Adobe  Acrobat X Pro软件完成这个工作,操作步骤如下面两图所示.注意在图二中一定要自己指定一个分辨率,不用用

  • 用python实现对比两张图片的不同

    from PIL import Image from PIL import ImageChops def compare_images(path_one, path_two, diff_save_location): """ 比较图片,如果有不同则生成展示不同的图片 @参数一: path_one: 第一张图片的路径 @参数二: path_two: 第二张图片的路径 @参数三: diff_save_location: 不同图的保存路径 """ im

  • python实现识别相似图片小结

    文章简介 在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在本文简单几句就说清,所以本文只作基本算法的科普向. 如有错误,请多包涵和多多指教. 参考的文章和图片来源会在底部一一列出. 以及本篇文章所用的代码都会在底下给出github地址. 安装相关库 python用作图像处理的相关库主要有openCV(C++编写,提供了python语言的接口),PIL,

  • Ubuntu下使用Python实现游戏制作中的切分图片功能

    本文实例讲述了Ubuntu下使用Python实现游戏制作中的切分图片功能.分享给大家供大家参考,具体如下: why 拿到一个人物行走的素材,要用TexturePacker打包.TexturePacker打包后,助于游戏加载图片效率,且比较好管理. 目前得到一张整图,无法直接导入到TexturePacker. what 切片:使用切片将源图像分成许多的功能区域. how 1 ubuntu下图片处理软件 GIMP: 画好参考线后, 点击 滤镜->WEB ->切片 2 python + PIL  (

  • python通过opencv实现批量剪切图片

    上一篇文章中,我们介绍了python实现图片处理和特征提取详解,这里我们再来看看Python通过OpenCV实现批量剪切图片,具体如下. 做图像处理需要大批量的修改图片尺寸来做训练样本,为此本程序借助opencv来实现大批量的剪切图片. import cv2 import os def cutimage(dir,suffix): for root,dirs,files in os.walk(dir): for file in files: filepath = os.path.join(root

  • python实现读取并显示图片的两种方法

    在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1. 显示图片 import matplotlib.pyplot as plt # plt 用于显示图片 import matplotlib.image as mpimg # mpimg 用于读取图片 import numpy as np lena = mpimg.imread('lena.png')

  • python tensorflow学习之识别单张图片的实现的示例

    假设我们已经安装好了tensorflow. 一般在安装好tensorflow后,都会跑它的demo,而最常见的demo就是手写数字识别的demo,也就是mnist数据集. 然而我们仅仅是跑了它的demo而已,可能很多人会有和我一样的想法,如果拿来一张数字图片,如何应用我们训练的网络模型来识别出来,下面我们就以mnist的demo来实现它. 1.训练模型 首先我们要训练好模型,并且把模型model.ckpt保存到指定文件夹 saver = tf.train.Saver() saver.save(s

  • Python+Opencv识别两张相似图片

    在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在本文简单几句就说清,所以本文只作基本算法的科普向. 看到一篇博客是介绍这个,但他用的是PIL中的Image实现的,感觉比较麻烦,于是利用Opencv库进行了更简洁化的实现. 相关背景 要识别两张相似图像,我们从感性上来谈是怎么样的一个过程?首先我们会区分这两张相片的类型,例如是风景照,还是人物照.风景照中

  • python使用Image处理图片常用技巧分析

    本文实例讲述了python使用Image处理图片常用技巧.分享给大家供大家参考.具体分析如下: 使用python来处理图片是非常方便的,下面提供一小段python处理图片的代码,需要安装图像处理工具包PIL(Python Image Library). #coding=utf-8 import Image import urllib2 import StringIO import os #改变图片大小 def resize_img(img_path): try: img = Image.open

随机推荐