opencv-Hough 直线变换

Hough 直线变换是一种在图像中检测直线的技术。它通过在极坐标空间中表示图像中的直线,将直线检测问题转换为参数空间的累加问题。OpenCV 提供了 cv2.HoughLines()cv2.HoughLinesP() 函数来执行 Hough 直线变换。

cv2.HoughLines()

lines = cv2.HoughLines(image, rho, theta, threshold)

参数说明:

  • image: 输入的二值图像,通常是通过边缘检测算法(如Canny)得到的。
  • rho: 极坐标中的像素距离精度。
  • theta: 极坐标中的角度精度,通常以弧度表示。
  • threshold: 累加平面中的阈值,只有累加值大于该阈值的直线才会被检测到。

返回值:

  • lines: 检测到的直线的参数。每行表示检测到的一条直线,包括极径(rho)和角度(theta)。

cv2.HoughLinesP()

lines = cv2.HoughLinesP(image, rho, theta, threshold, minLineLength, maxLineGap)

除了上述参数外,cv2.HoughLinesP() 还包括以下两个参数:

  • minLineLength: 最小直线长度,小于该长度的直线会被排除。
  • maxLineGap: 直线之间允许的最大间隙,小于该间隙的直线将被连接为一条直线。

以下是一个简单的示例,演示如何使用 Hough 直线变换检测图像中的直线:

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取图像并转换为灰度
img = cv2.imread( r"C:\Users\mzd\Desktop\opencv\2.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 边缘检测
edges = cv2.Canny(gray, 50, 150)

# 执行 Hough 直线变换
lines = cv2.HoughLines(edges, 1, np.pi/180, 100)

# 在原图上绘制检测到的直线
for line in lines:
    rho, theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a * rho
    y0 = b * rho
    x1 = int(x0 + 1000 * (-b))
    y1 = int(y0 + 1000 * (a))
    x2 = int(x0 - 1000 * (-b))
    y2 = int(y0 - 1000 * (a))
    cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2)

# 显示原图和检测到的直线
plt.figure(figsize=(10, 5))

plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title('Original Image with Hough Lines'), plt.axis('off')

plt.subplot(122), plt.imshow(edges, cmap='gray')
plt.title('Canny Edge Detection'), plt.axis('off')

plt.show()

在这里插入图片描述

在这个示例中,我们首先读取了一幅图像,将其转换为灰度图像,然后使用Canny边缘检测算法得到图像的边缘。接着,使用 cv2.HoughLines() 函数进行 Hough 直线变换,并在原图上绘制检测到的直线。最后,通过 Matplotlib 显示原图和边缘检测结果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS APP包分析工具 | 京东云技术团队

介绍 分享一款用于分析iOSipa包的脚本工具,使用此工具可以自动扫描发现可修复的包体积问题,同时可以生成包体积数据用于查看。这块工具我们团队内部已经使用很长一段时间,希望可以帮助到更多的开发同学更加效率的优化包体积问题。 工具下载…

深度学习之六(自编码器--Autoencoder)

概念 自编码器(Autoencoder)是一种神经网络架构,用于无监督学习和数据的降维表示。它由两部分组成:编码器(Encoder)和解码器(Decoder)。 结构: 编码器(Encoder): 接收输入数据并将其压缩为潜在表示(latent representation),通常比输入数据的维度要低。编码器的…

探索结构体的奥秘

目录 🍂结构体 1,结构体的声明 1.1 结构的基础知识 1.2 结构的声明 1.3 特殊的声明 1.4 结构的自引用 1.5 结构体变量的定义和初始化 1.6 结构体内存对齐 1.6.1 如何计算 1.6.2 为什么存在内存对齐 1.7 修改默认对齐数 1.8 结构体传参 2&am…

小型内衣裤洗衣机哪个牌子好?性价比小型洗衣机推荐

内衣内裤应该如何清洗才能实现在不伤衣的同时有能够洗干净呢?其实除了使用温水搭配手洗以外,还有一些清洗方式,那就是选择一台专门为内衣定制的内衣洗衣机。目前内衣洗衣机由于精致小巧,方便安装,方便使用,…

常见网络安全防护

1 阻断服务攻击(DOS) 阻断服务攻击,想办法目标网络资源用尽变种:分布式阻断服务攻击 影响: 宽带消耗性(消耗目标的带宽)资源消耗型(消耗目标的计算资源) 解决方案&am…

【OpenCV+OCR】计算机视觉:识别图像验证码中指定颜色文字

文章目录 1. 写在前面2. 读取验证码图像3. 生成颜色掩码4. 生成黑白结果图5. OCR文字识别6. 测试结果 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【…

易点易动设备管理系统提升设备能耗管理和设备状态监控效率

如今,能源效率和设备状态监控对于企业来说变得越发重要。传统的设备管理方式往往存在能耗浪费和难以实时监控设备状态的问题。为了解决这些问题,易点易动设备管理系统应运而生。本文将介绍易点易动设备管理系统的功能和优势,以及如何通过它提…

FreeRTOS学习之路,以STM32F103C8T6为实验MCU(2-2:中断)

学习之路主要为FreeRTOS操作系统在STM32F103(STM32F103C8T6)上的运用,采用的是标准库编程的方式,使用的IDE为KEIL5。 注意!!!本学习之路可以通过购买STM32最小系统板以及部分配件的方式进行学习…

Python中使用pyzbar实现二维码生成和识别功能

目录 一、引言 二、pyzbar库介绍 三、安装pyzbar库 四、使用pyzbar生成二维码 五、使用pyzbar识别二维码 一、引言 随着二维码的普及和应用,二维码生成和识别功能在日常生活和工作中越来越重要。在Python中,我们可以使用pyzbar库来实现二维码生成和…

9.9 Windows驱动开发:内核远程线程实现DLL注入

在笔者上一篇文章《内核RIP劫持实现DLL注入》介绍了通过劫持RIP指针控制程序执行流实现插入DLL的目的,本章将继续探索全新的注入方式,通过NtCreateThreadEx这个内核函数实现注入DLL的目的,需要注意的是该函数在微软系统中未被导出使用时需要首…

TikTok与精神健康:社交媒体在压力时代的作用

在当今数字化和社交化的时代,社交媒体已成为人们生活中不可或缺的一部分。其中,TikTok作为一款备受欢迎的短视频应用,不仅改变了人们的娱乐方式,也对精神健康产生了深远的影响。 本文将深入探讨TikTok在压力时代对精神健康的作用…

【VScode】安装配置、插件及远程SSH连接

一、VSCode安装 二、配置安装插件 三、配置远程连接SSH 四、MinGW 一、VSCode安装 VS官网 Visual Studio Code - Code Editing. Redefined下载安装包: 二、配置安装插件 安装中文插件 配置字体为20 配置文件–>首选项->设置->Font Size为20 设置 VSC…

【2021集创赛】基于ARM-M3的双目立体视觉避障系统 SOC设计

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 团队介绍 参赛单位:上海电力大学 队伍名称:骇行队 总决赛奖项:二等奖 1.摘要 随着信息技术的发展,AGV(Automated Guided Vehic…

oracle的debjob挂載查詢

背景 有一個需求需要定時去執行一個produce,可以使用oracle的dbjob定時執行,相比較之前的vbs更加絲滑 --傳遞produce 開始的時間 頻率 declarea number;beginDBMS_JOB.SUBMIT(a,xx_warehouse_daliy_record_p;,to_date(202311230800,yyyymmddhh24mi),…

第二证券:北证50指数一枝独秀 短剧游戏概念股持续活跃

周三,沪深两市三大指数颤动调整,北证50指数“鹤立鸡群”,大涨超8%。到收盘,上证综指报3043.61点,跌0.79%;深证成指报9855.66点,跌1.41%;创业板指报1950.01点,跌1.73%。沪…

促进材料基因工程基础理论、前沿技术和关键装备的发展和应用,第七届材料基因工程高层论坛将于12月重庆举办,龙讯旷腾出席会议

为了进一步促进材料基因工程基础理论、前沿技术和关键装备的发展和应用,加强国际交流,加速我国新材料的研发和应用,由中国材料研究学会、西部科学城重庆高新区管理委员会主办,重庆大学、北京科技大学、北京云智材料大数据研究院等…

计算机毕业设计项目选题推荐(免费领源码)Java+ssm+MYSQL酒店大数据资源管理系统的设计与实现02029

摘要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对酒店大数据资源管理系统等问题,对…

Modbus转Profinet网关:PLC与天信流量计通讯的经典案例

无论您是PLC或工业设备的制造商,还是工业自动化系统的维护人员,可能会遇到需要将不同协议的设备连接组合并通讯的情况,Modbus和Profinet是现代工业自动化中常见的两种通信协议,在工业控制领域中被广泛应用。 在这种情况绝大多数会…

界面组件DevExpress Reporting v23.1 - Web报表设计器功能升级

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表 界面组件DevExpress Reporting v23.1已经发布一段…

【正则插件】前端正则插件以及预览插件推荐

1) 2) any-rule Pegex Previewer 下载好插件之后 在代码层右键选择 选择你需要的正则表达式,随后可以使用第二个插件 正则表达式插入之后顶部会有 Test Regex.. 点击会出现以下内容 将他 ctrl a 删除,输入你对应的正则表达…