师德师风建设网站,怎么做非法网站,外贸企业商城网站建设,延庆宜昌网站建设Hough 圆环变换#xff08;Hough Circle Transform#xff09;是一种用于在图像中检测圆环的技术。与 Hough 直线变换类似#xff0c;它通过在参数空间中表示图像中的圆环#xff0c;将圆环检测问题转换为参数空间的累加问题。OpenCV 提供了 cv2.HoughCircles() 函数来执行…Hough 圆环变换Hough Circle Transform是一种用于在图像中检测圆环的技术。与 Hough 直线变换类似它通过在参数空间中表示图像中的圆环将圆环检测问题转换为参数空间的累加问题。OpenCV 提供了 cv2.HoughCircles() 函数来执行 Hough 圆环变换。
cv2.HoughCircles()
circles cv2.HoughCircles(image, method, dp, minDist, param1, param2, minRadius0, maxRadius0)参数说明
image: 输入的灰度图像。method: 圆环检测的方法。目前 OpenCV 中只支持 cv2.HOUGH_GRADIENT表示使用基于梯度的检测方法。dp: 累加器分辨率与图像分辨率的倒数比。如果设置为1累加器的分辨率与图像分辨率相同如果大于1累加器的分辨率小于图像分辨率。minDist: 检测到的圆之间的最小距离。param1: Canny 边缘检测的高阈值。param2: 圆心累加器的阈值。只有当某个圆的累加值高于该阈值时该圆才会被检测到。minRadius: 检测的圆的最小半径。maxRadius: 检测的圆的最大半径。
返回值
circles: 检测到的圆的参数。每行表示一个检测到的圆包括圆心的坐标和半径。
以下是一个简单的示例演示如何使用 Hough 圆环变换检测图像中的圆环
import cv2
import numpy as np
import matplotlib.pyplot as plt# 读取图像并转换为灰度
img cv2.imread( rC:\Users\mzd\Desktop\opencv\3.jpg)
gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 高斯模糊
blurred cv2.GaussianBlur(gray, (9, 9), 2)# 执行 Hough 圆环变换
circles cv2.HoughCircles(blurred, cv2.HOUGH_GRADIENT, dp1, minDist50, param150, param230, minRadius10, maxRadius100)# 将检测到的圆心坐标和半径转换为整数
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.figure(figsize(10, 5))plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title(Original Image with Circles), plt.axis(off)plt.subplot(122), plt.imshow(blurred, cmapgray)
plt.title(Blurred Image), plt.axis(off)plt.show()在这个示例中我们首先读取了一幅图像将其转换为灰度图像然后对图像进行高斯模糊。接着使用 cv2.HoughCircles() 函数进行 Hough 圆环变换并在原图上绘制检测到的圆环。最后通过 Matplotlib 显示原图和模糊图像。