从零开始详解OpenCV硬币检测

前言

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

详解

打开并转换成灰度图

python 复制代码
img = cv2.imread('coin.png')
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.imshow(img)

二值化

python 复制代码
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)

边缘检测

python 复制代码
output = cv2.Canny(output, 200, 255)
plt.imshow(output, cmap='gray')

霍夫变换

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

python 复制代码
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)
python 复制代码
语法:
	cv2.HoughCircles(image, method, dp, minDist[, circles[, param1[, param2[, minRadius[, maxRadius]]]]]) -> circles
参数:
	image:输入的单通道灰度图像,函数将在该图像中进行圆检测。
	method:定义检测图像中圆的方法。默认是cv2.HOUGH_GRADIENT
	dp:图像分辨率与累加器分辨率的比值。这个值可以理解为累加器分辨率与图像分辨率的反比。
		例如,如果 dp=1,则累加器与图像具有相同的分辨率。
		如果 dp=2,累加器分辨率是图像分辨率的一半。
	minDist:检测到的圆的中心之间的最小距离。
		如果 minDist 太小,可能会导致检测到多个相邻的圆。
		如果 minDist 太大,则可能会漏掉一些圆。
	param1:Canny 边缘检测的高阈值。
		Canny 边缘检测是 cv2.HoughCircles 函数中用于寻找边缘的一个步骤。
	param2:累加器阈值。这个阈值用于判断一个圆是否应该被检测出来。
		值越小,检测出的圆越多,但可能会包括一些假圆。
	minRadius:需要检测的最小圆半径。
	maxRadius:需要检测的最大圆半径。
返回值:
	circles 是一个 NumPy 数组,包含检测到的圆的圆心坐标 (x, y) 和半径 r。
		数组的形状为 (n, 3),其中 n 是检测到的圆的数量。
相关推荐
sali-tec5 天前
C# 基于OpenCv的视觉工作流-章27-图像分割
图像处理·人工智能·opencv·算法·计算机视觉
saoys5 天前
Opencv 学习笔记:腐蚀操作 + 轮廓标记 + 分水岭分割
笔记·opencv·学习
saoys5 天前
Opencv 学习笔记:距离变换(DIST_L1 算法实战 + 归一化)
笔记·opencv·学习
guygg885 天前
图像匹配技术:相关匹配、Hausdorff距离匹配与基于距离变换的Hausdorff距离匹配
图像处理·opencv·计算机视觉
AI科技星5 天前
物理世界的几何建构:论统一场论的本体论革命与概念生成
人工智能·opencv·线性代数·算法·矩阵
fie88895 天前
基于Matlab实现的指纹识别系统流程
opencv·计算机视觉·matlab
sali-tec6 天前
C# 基于OpenCv的视觉工作流-章26-图像拼接
图像处理·人工智能·opencv·算法·计算机视觉
智驱力人工智能6 天前
机场鸟类活动智能监测 守护航空安全的精准工程实践 飞鸟检测 机场鸟击预防AI预警系统方案 机场停机坪鸟类干扰实时监测机场航站楼鸟击预警
人工智能·opencv·算法·安全·yolo·目标检测·边缘计算
Σίσυφος19006 天前
OpenCV 之双线性插值
人工智能·opencv·计算机视觉
格林威6 天前
Baumer相机金属粉末铺粉均匀性评估:用于增材制造过程监控的 7 个实用技巧,附 OpenCV+Halcon 实战代码!
人工智能·opencv·视觉检测·制造·工业相机·智能相机·堡盟相机