python+opencv识别图片中的圆形

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常用函数与用法示例攻略 1. Python常用内置函数 1.1 type()函数 type()函数可以用来查看一个对象的数据类型。 示例: a = ‘Hello World’ b = 123 c = [1, 2, 3] print(type(a)) print(type(b)) print(type(c)) 输出: <class ‘str’…

    python 2023年5月30日
    00
  • Python实现的概率分布运算操作示例

    Python实现的概率分布运算操作示例 概率分布是概率论中的重要概念,它描述了随机变量在不同取值下的概率分布情况。在Python中,我们可以使用许多库来进行概率分布运算,例如NumPy、SciPy和pandas等。这些库提供了许多函数和方法,用于生成、计算和可视化各种概率分布。下面是一个Python实现的概率分布运算操作示例,包含两个示例说明。 示例1:正态…

    python 2023年5月14日
    00
  • python常用的各种排序算法原理与实现方法小结

    排序算法是计算机科学中的基本问题之一。在Python中,我们可以使用各种排序算法对数据进行排序。以下是Python常用的各种排序算法原理与实现方法的小结。 冒泡排序 冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的两个元素,并按照大小交换它们的位置,直到整个列表都是有序的。以下是冒泡排序的Python实现: def bubble_sort(…

    python 2023年5月13日
    00
  • Python多进程模式实现多核CPU并行计算

    下面是详细的讲解: Python多进程模式实现多核CPU并行计算 什么是多进程模式? 在计算机中,多进程是指一个程序同时运行多个进程。每个进程都有自己的地址空间、内存使用、文件句柄以及系统资源,进程之间可以相互通信或者互相影响。多进程可以利用多核CPU并行计算,提高程序的运行效率。 Python多进程模式实现 Python标准库中提供了multiproces…

    python 2023年6月6日
    00
  • 详谈tensorflow gfile文件的用法

    下面是详细的攻略: 详谈tensorflow.gfile文件的用法 在TensorFlow中,我们可以使用tensorflow.gfile模块来读写文件。该模块提供了一种跨平台的文件操作方式,可以在不同的操作系统上使用相同的代码。本文将手把手教你如何使用tensorflow.gfile模块读写文件,并提供两个示例说明。 读取文件 在TensorFlow中,我…

    python 2023年5月14日
    00
  • Python网络爬虫神器PyQuery的基本使用教程

    Python网络爬虫神器PyQuery的基本使用教程 什么是PyQuery PyQuery是Python中的一个HTML解析库,它的API与jQuery类似,使得你可以使用jQuery的语法来操作和查找HTML文档,解析速度非常快,使用也非常简洁方便。如果你熟悉jQuery,那么上手学习PyQuery会非常简单。 安装PyQuery 在Python中,我们可…

    python 2023年5月14日
    00
  • python3整数反转的实现方法

    下面是关于“Python3整数反转的实现方法”的完整攻略: 一、需求分析 需要实现将一个整数进行反转的功能,即将输入的整数按照位数反过来。例如,输入123,输出321。 二、解决方案 方法一:利用字符串反转 def reverse_num(num: int) -> int: if num < 0: return -reverse_num(-num…

    python 2023年6月5日
    00
  • python实现NB-IoT模块远程控制

    Python实现NB-IoT模块远程控制完整攻略 1. 前言 NB-IoT是一种低功耗、广覆盖、高容量的无线通信技术,被广泛应用于物联网设备的连接和控制。基于Python语言,我们可以利用NB-IoT模块实现远程控制,实现物联网设备的远程管理。 2. 硬件和软件的准备 2.1 硬件准备 NB-IoT模块:如华为ME309或者Quectel BC95等NB-I…

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