当前位置: 首页 > news >正文

opencv-Hough 圆环变换

Hough 圆环变换(Hough Circle Transform)是一种用于在图像中检测圆环的技术。与 Hough 直线变换类似,它通过在参数空间中表示图像中的圆环,将圆环检测问题转换为参数空间的累加问题。OpenCV 提供了 cv2.HoughCircles() 函数来执行 Hough 圆环变换。

cv2.HoughCircles()

circles = cv2.HoughCircles(image, method, dp, minDist, param1, param2, minRadius=0, maxRadius=0)

参数说明:

  • 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( r"C:\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, dp=1, minDist=50, param1=50, param2=30, minRadius=10, maxRadius=100)# 将检测到的圆心坐标和半径转换为整数
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, cmap='gray')
plt.title('Blurred Image'), plt.axis('off')plt.show()

在这里插入图片描述

在这里插入图片描述

在这个示例中,我们首先读取了一幅图像,将其转换为灰度图像,然后对图像进行高斯模糊。接着,使用 cv2.HoughCircles() 函数进行 Hough 圆环变换,并在原图上绘制检测到的圆环。最后,通过 Matplotlib 显示原图和模糊图像。

http://www.lryc.cn/news/240191.html

相关文章:

  • 福州大学《嵌入式系统综合设计》实验五:图像裁剪及尺寸变换
  • LLM之Prompt(二):清华提出Prompt 对齐优化技术BPO
  • chatglm3部署使用
  • Android扫码ZXing
  • 求解Beamforming-SOCP(CVX求解)
  • 解决Vue项目的runtime-only转为runtime-compiler
  • hash模式和history模式
  • 聊聊logback的LevelFilter
  • mysql 行转列 GROUP_CONCAT 试验
  • HarmonyOS元服务开发实战—端云一体化开发
  • 【搭环境】装Python3.8 open3d
  • 【C语言】深入解开指针(四)
  • AMEYA360:瑞萨面向高端工业传感器系统推出高精度模拟前端的32位RX MCU
  • 切面Aspect + 策略模式实现待办提醒功能
  • SAP 调取http的x-www-form-urlencoded形式的接口
  • thingsboard3.6的mailConfigTemplateController错误
  • Go语言中获取IP
  • 【Computer Vision Foundation】全球计算机视觉基金会论文网
  • 计网(复习自用)
  • 安徽省广德市选择云轴科技ZStack Cloud云平台建设县级智慧城市
  • 【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 6
  • nuxt3项目修改端口号
  • c语言中使用openssl对rsa私钥解密
  • mysql中数据是如何被用B+树查询到的
  • Redisson 分布式锁的最佳实践
  • ArkTS声明式开发范式
  • 史诗级云故障敲响警钟,应用保障不能没有“连续键”!
  • SSH连接远程服务器报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED 解决方法
  • 数据库——查询连续的月份
  • git代码提交命令(如何提交代码)