从零开始详解OpenCV硬币检测

前言

在上一篇中我们介绍了车道线检测,在本篇中我们将使用类似的做法来实现对应硬币的检测。
在这里插入图片描述

详解

打开并转换成灰度图

img = cv2.imread('coin.png')
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.imshow(img)

在这里插入图片描述

二值化

thresh, output = cv2.threshold(gray_image, 80, 255, cv2.THRESH_BINARY)
output = cv2.GaussianBlur(output, (9, 9), 2)
plt.imshow(output, cmap=plt.cm.gray)

在这里插入图片描述

边缘检测

output = cv2.Canny(output, 200, 255)
plt.imshow(output, cmap='gray')

在这里插入图片描述

霍夫变换

在之前的文章中我们使用霍夫变换获取到了直线,而这次我们需要的是圆形。
cv2.HoughCircles 是 OpenCV 库中的一个函数,用于在图像中检测圆形。这个函数基于霍夫变换(Hough Transform)的原理,在灰度图像中检测圆形物体。

circles = cv2.HoughCircles(output, cv2.HOUGH_GRADIENT, 1, 50, param1=100, param2=30, minRadius=25)circles = np.uint16(np.around(circles))
for i in circles[0, :]:cv2.circle(img, (i[0], i[1]), i[2], (0, 255, 0), 2)cv2.circle(img, (i[0], i[1]), 2, (0, 0, 255), 3)plt.imshow(img)

在这里插入图片描述

语法:cv2.HoughCircles(image, method, dp, minDist[, circles[, param1[, param2[, minRadius[, maxRadius]]]]]) -> circles
参数:image:输入的单通道灰度图像,函数将在该图像中进行圆检测。method:定义检测图像中圆的方法。默认是cv2.HOUGH_GRADIENTdp:图像分辨率与累加器分辨率的比值。这个值可以理解为累加器分辨率与图像分辨率的反比。例如,如果 dp=1,则累加器与图像具有相同的分辨率。如果 dp=2,累加器分辨率是图像分辨率的一半。minDist:检测到的圆的中心之间的最小距离。如果 minDist 太小,可能会导致检测到多个相邻的圆。如果 minDist 太大,则可能会漏掉一些圆。param1:Canny 边缘检测的高阈值。Canny 边缘检测是 cv2.HoughCircles 函数中用于寻找边缘的一个步骤。param2:累加器阈值。这个阈值用于判断一个圆是否应该被检测出来。值越小,检测出的圆越多,但可能会包括一些假圆。minRadius:需要检测的最小圆半径。maxRadius:需要检测的最大圆半径。
返回值:circles 是一个 NumPy 数组,包含检测到的圆的圆心坐标 (x, y) 和半径 r。数组的形状为 (n, 3),其中 n 是检测到的圆的数量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/703579.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

精选合作伙伴:如何挑选最适合您小程序商城开发的软件公司

在选择一家合适的软件公司来协助您开发并运营小程序商城时,选择过程无疑是一项关键而复杂的任务。市场上的软件公司繁多,各具特色,那么,如何在这众多的选择中找到最适合您的合作伙伴呢?以下将从需求梳理、公司实力评估…

##20 实现图像风格迁移:使用PyTorch深入学习的艺术之旅

文章目录 前言项目概述准备阶段图像处理模型选择风格和内容特征提取风格迁移算法优化过程结果展示完整代码与实验项目结论参考文献 前言 图像风格迁移是一种使一幅图像呈现另一幅画作风格的技术,通过深度学习,我们能够捕捉到内容图像的结构信息和风格图…

【driver6】debugfs,性能优化,

文章目录 1.内核调试手段:debugfs.h中api建立目录/sys/kernel/debug2.性能优化:裸磁盘无法使用,一般都刷文件系统。驱动加上要考虑磁盘io,内存占用,cpu使用情况3.Valgrind内存泄漏排查案例:4.cpu瓶颈&#…

基于YOLOv5的道路裂缝检测,加入一种基于内容引导注意力(CGA)的混合融合提升2个多点

💡💡💡本文主要内容:详细介绍道路裂缝检测整个过程,从数据集到训练模型到结果可视化分析。 💡💡💡通过加入一种基于内容引导注意力(CGA)的混合融合提升检测性能, 特征融合创新 | 一…

CCF PTA 2022年11月C++学生会提名

【问题描述】 学生会选举要开始了。根据选举规则,首先由全体同学进行提名,每位同学可以从全体同学中提 名一名同学参选。选举时,会从全体同学的提名中选出一名学生会主席,再从三个年级分别的提名中 各选出一名副主席。现在&#…

【大数据】计算引擎MapReduce

目录 1.概述 1.1.前言 1.2.大数据要怎么计算? 1.3.什么是MapReduce? 2.架构 3.工作流程 4.shuffle 4.1.map过程 4.2.reduce过程 1.概述 1.1.前言 本文是作者大数据系列专栏的其中一篇,专栏地址: https://blog.csdn.ne…

Python代码:二、多行输出

1、题目 将字符串 Hello World! 存储到变量str1中,再将字符串 Hello Nowcoder! 存储到变量str2中,再使用print语句将其打印出来(一行一个变量)。 2、代码 import sys str1 Hello World! str2 Hello Nowcoder! print (str1,st…

软件测试的一些概念

一.基本概念 1.什么事需求 1)需求的定义 用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时,必须完成的任务,该需求一般比较简略 软件需求:或则叫功能需求&a…

Linux服务器中了病毒后的清理方法

病毒的基础排查 1. 检查计划任务 黑客入侵服务器后,为了让病毒脚本持续执行,通常会在计划任务配置文件里面写入定时执行的脚本任务。 检查命令说明ls -l /var/spool/cron/*查看用户级计划任务配置。有的人喜欢用 crontab -l 命令来排查,这…

怎么截图公式识别?方法简单介绍

怎么截图公式识别?随着科技的不断发展,人们对于高效、便捷的工作方式的需求日益增加。在学术、教育以及科技研发等领域,数学公式是不可或缺的一部分。然而,手动输入公式往往费时费力,且容易出错。因此,截图…

Python 机器学习 基础 之 监督学习/分类问题/回归任务/泛化、过拟合和欠拟合 基础概念说明

Python 机器学习 基础 之 监督学习/分类问题/回归任务/泛化、过拟合和欠拟合 基础概念说明 目录 Python 机器学习 基础 之 监督学习/分类问题/回归任务/泛化、过拟合和欠拟合 基础概念说明 一、简单介绍 二、监督学习 三、分类问题 四、回归任务 五、泛化、过拟合和欠拟合…