python+opencv识别图片中的圆形

yizhihongxing

Python+OpenCV识别图片中的圆形

本文讲解如何使用Python和OpenCV库对图片中的圆形进行识别和定位。

准备工作

在开始编写代码前,需要先安装Python和OpenCV库:

# 安装Python
sudo apt-get install python

# 安装OpenCV库
pip install opencv-python

加载图片

在OpenCV中,我们可以使用cv2.imread()方法加载图片:

import cv2

img = cv2.imread("test.jpg")

预处理图片

在进行圆形识别前,我们需要对图片进行预处理,以便提高识别的准确率。预处理通常包括以下几个步骤:

  • 灰度化
  • 中值滤波
  • 二值化
# 灰度化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 中值滤波
gray = cv2.medianBlur(gray, 5)

# 二值化
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

检测圆形

在进行圆形检测前,需要使用cv2.HoughCircles()方法设置圆形检测参数:

# 设置圆形检测参数
circles = cv2.HoughCircles(binary, cv2.HOUGH_GRADIENT, 1.5, 100)

# 绘制圆形
if circles is not None:
    circles = np.round(circles[0, :]).astype("int")

    for (x, y, r) in circles:
        cv2.circle(img, (x, y), r, (0, 255, 0), 2)

示例1

import cv2
import numpy as np

img = cv2.imread("test.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.medianBlur(gray, 5)
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

circles = cv2.HoughCircles(binary, cv2.HOUGH_GRADIENT, 1.5, 100)

if circles is not None:
    circles = np.round(circles[0, :]).astype("int")

    for (x, y, r) in circles:
        cv2.circle(img, (x, y), r, (0, 255, 0), 2)

cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

示例2

import cv2
import numpy as np

img = cv2.imread("test2.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.medianBlur(gray, 5)
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

circles = cv2.HoughCircles(binary, cv2.HOUGH_GRADIENT, 1.5, 100)

if circles is not None:
    circles = np.round(circles[0, :]).astype("int")

    for (x, y, r) in circles:
        cv2.circle(img, (x, y), r, (0, 255, 0), 2)

cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

上述示例代码中,test.jpgtest2.png是两张待识别的图片,可以根据实际需要进行更改。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python+opencv识别图片中的圆形 - Python技术站

(1)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Python中实现字符串类型与字典类型相互转换的方法

    在Python中,字符串类型(str)和字典类型(dict)是两种不同的数据类型。然而,在某些情况下,我们需要将字符串类型与字典类型相互转换,这时候就需要使用一些特定的方法。接下来,我们会通过两个示例来详细讲解Python中实现字符串类型与字典类型相互转换的方法。 示例一:从字符串转换到字典 在Python中,我们可以使用json模块将字符串转换为字典。具体…

    python 2023年5月13日
    00
  • Python解决pip install时出现的Could not fetch URL问题

    下面是详细讲解“Python解决pip install时出现的Could not fetch URL问题”的完整攻略。 问题描述 在使用 pip install 安装 Python 包时,可能会遇到 Could not fetch URL 问题。该错误通常是由于网络问题导致的,可能是无法连接到 PyPI 服务器或无法下载源文件等原因造成的。 解决方案 方案一…

    python 2023年5月14日
    00
  • Python简繁体转换的简单实现步骤

    下面是“Python简繁体转换的简单实现步骤”的完整攻略。 步骤一:安装Python第三方库opencc opencc 是一个开源项目,可以实现简繁体转换。在 Python 中,可以使用第三方库opencc来进行简繁体转换,步骤如下: 下载并安装opencc 在Linux系统下,在终端中输入以下命令: sudo apt install opencc 安装Py…

    python 2023年6月5日
    00
  • 详解Python手写数字识别模型的构建与使用

    详解Python手写数字识别模型的构建与使用 简介 本攻略将详细讲解如何使用Python构建一个手写数字识别模型,该模型可以识别0-9这10个数字。通过本攻略的学习,您将了解到以下知识点: Python基础语法知识 机器学习的基础理论和相关算法 如何使用Python编写一个机器学习模型 如何使用Python实现手写数字图片的预处理和特征提取 通过以下两条示例…

    python 2023年6月3日
    00
  • Python with用法:自动关闭文件进程

    Python with用法:自动关闭文件进程 在 Python 中,使用文件进行读写操作是十分常见的操作行为。通常我们需要手动打开文件、读取文件、写入数据并关闭文件进程。在这个过程中,如果程序出现异常或者在读写文件等待过程中被打断,导致文件未能完全正常关闭,这样就容易出现文件泄露或者文件损坏等问题。 使用 with 语句可以有效解决这类问题,with 语句可…

    python 2023年5月19日
    00
  • 基于python 将列表作为参数传入函数时的测试与理解

    在Python中,可以将列表作为参数传入函数中进行处理。本文将详细讲解基于Python将列表作为参数传入函数时的测试与理解。 列表作为参数传入函数 在Python中,可以将列表作为参数入函数中进行处理。下面是一个示例: # 示例1:将列表作为参数传入函数 def sum_list(lst): sum =0 for i in lst: sum += i ret…

    python 2023年5月13日
    00
  • 详解Python结合Genetic Algorithm算法破解网易易盾拼图验证

    详解Python结合Genetic Algorithm算法破解网易易盾拼图验证 简介 网易易盾拼图验证码是一种常见的人机验证方式,其通过将原图拆分成小拼图,用户需要将拼图正确还原后才能通过验证。本文将介绍如何使用Python结合遗传算法(Genetic Algorithm)破解网易易盾拼图验证。 思路 考虑到网易易盾拼图验证码有多种随机拆分方式,且每次验证的…

    python 2023年5月18日
    00
  • Python3一行代码实现图片文字识别的示例

    Python3一行代码实现图片文字识别的示例 在这个示例中,我们将使用Python3语言和一个名为tesseract的开源OCR引擎来实现图片文字识别。其中,“OCR”是“Optical Character Recognition(光学字符识别)”的缩写。 必备工具 在开始此示例之前,您需要安装以下工具: Python3 Tesseract pytesser…

    python 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部