opencv-Hough 直线变换

news2024/11/17 19:36:45

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 显示原图和边缘检测结果。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2014年12月22日 Go生态洞察:Go语言中的代码生成

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

【excel技巧】excel表格如何转换为word

Excel表格想要转换到word文档中,直接粘贴复制的话,可能会导致表格格式错乱,那么如何转换才能够保证表格不错乱?今天分享两个方法,excel表格转换到word文件。 方法一: 首先打开excel表格,将表格…

CRM系统对企业来说是否必要?

稍微了解过CRM系统的人,应该都知道Salesforce、Zoho CRM、销售易等品牌,这些品牌备受国内外企业的青睐。我们总在强调CRM的作用,但是对中小企业来说,CRM系统有没有必要买? 小编认为,CRM系统是中小企业提升…

ChatGPT可以帮你实现理想工作的梦想

内容来源:0xluffy_eth ChatGPT可以帮你实现理想工作的梦想。 你可以: 找到工作机会 打造最佳简历准备面试 通过这三个简单插件实现你理想工作的保障:[插件链接] 第一步:安装3个插件 → 进入ChatGPT → 点击插件然后选择插件商店…

java jdk 版本切换

java jdk 版本切换 1.JAVA8_HOME ,JAVA17_HOME为切换的两个版,JAVA_HOME来选择 2.path中java_home配置项置顶,必须在蓝色选择中框上方,它是电脑自带的配置,位置太靠上会把我们自己的配置给覆盖掉 3.java -version 查看切换结果

BTS-GAN:基于MRI和条件对抗性网络的乳腺肿瘤计算机辅助分割系统

BTS-GAN: Computer-aided segmentation system for breast tumor using MRI and conditional adversarial networks BTS-GAN:基于MRI和条件对抗性网络的乳腺肿瘤计算机辅助分割系统背景贡献实验方法Parallel dilated convolution module(并行扩展卷积模块…

【C语言】计算实时太阳角度(高度角、方位角),以及使用stm32单片机实时获取时间戳

整体计算方法 在编写该代码的过程中寻找了多篇博文和论文,综合所有文章且按网上的以0时的方位角的0,且随时间累加累加至360度。我修改了博文和论文的一些角度的计算方法。得到一下代码与网站计算的方位角相互验证过,误差不超过1 验证网站 太…

docker安装mysql挂着目录和mysql备份和恢复

第一,镜像拉取,运行镜像并挂载目录,尝试挂bin下,启动不了,不知为啥 docker run --privilegedtrue -itd --namevmysql -p 3306:3306 -v /home/vmysql:/home/vmysql -e MYSQL_ROOT_PASSWORD123456 mysql(图…

计算机视觉的应用19-基于pytorch框架搭建卷积神经网络CNN的卫星地图分类问题实战应用

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用19-基于pytorch框架搭建卷积神经网络CNN的卫星地图分类问题实战应用。随着遥感技术和卫星图像获取能力的快速发展,卫星图像分类任务成为了计算机视觉研究中一个重要的挑战。为了促进这一…

Leetcode—6.N字形变换【中等】

2023每日刷题&#xff08;三十七&#xff09; Leetcode—6.N字形变换 算法思想 参考k神的题解 实现代码 class Solution { public:string convert(string s, int numRows) {if(numRows < 2) {return s;}vector<string> rows(numRows);int flag -1;int i 0;for(…

FreeSQL 基本使用

FreeSQL连接MySQL 安装 FeeSql相关库 FreeSql 基本库 FreeSql.DbContext FreeSql.Extensions.Linq linq语法扩展库 FreeSql.Provider.Mysql MySQL连接库 新建DbConent.cs public class Base{static string connstr "Data Source127.0.0.1;Port3306;User IDroot;Pa…

S32K144W深度睡眠的问题

电源芯片是一个9到60的宽压芯片。另带一个两轴加表&#xff0c;两个485。 10V正常工作时&#xff0c;电流为26mA 休眠后的电流&#xff0c;只有串口2进行了反初始化&#xff1a; u2_printf(“ENTER LOW-POWER SLEEPDEEP MODE. %d \r\n”,MCU_Freq); //LPUART_DRV_Deinit(INST…

赛桨在结构领域全新探索:机理驱动的无网格结构拓扑优化

自PaddleScience&#xff08;赛桨&#xff09; V1.0于2023年8月正式发布以来&#xff0c;其支持数据和机理驱动的AI for Science求解模式备受工程领域的欢迎。赛桨不仅提供了包括流体、结构、气象等多个领域的基础网络模型&#xff0c;还提供了丰富的生态共建案例。截至目前&am…

数组对象判重最佳实践

数组对象判重最佳实践 赶紧挣钱&#xff0c;回家过年… 1.问题回顾 deviceSelectedRow(row) {this.ElectricalPartList.push(row)}&#xff0c;在此方法中&#xff0c;ElectricalPartList需要多次push进去数据&#xff0c;但是row可能存在重复&#xff0c;如何判重呢&#xff…

easyrecovery免费版2024最新电脑数据恢复工具

easyrecovery免费版是一款操作简便且实用的数据恢复工具&#xff0c;easyrecovery绿色版可以用来恢复各种各样被删除的文件、视频、图片等&#xff1b;EasyRecovery功能非常全面&#xff0c;easyrecovery还可以支持SD卡数据恢复&#xff0c;TF卡等各种存储卡文件恢复(图片、视频…

GeoTrust通配符证书:保护您的网站安全

GeoTrust通配符 SSL证书是一种特殊的 SSL 证书类型&#xff0c;它可以同时为您的主域名及其所有子域提供安全保护。无论您有多少个不同的子域需要保障&#xff0c;都可以通过单一的 GeoTrust 通配符 SSL 证书轻松实现&#xff0c;极大地简化了管理流程并降低了成本。 此外&…

基于.net framework4.0框架下winform项目实现寄宿式web api

首先Nuget中下载包&#xff1a;Microsoft.AspNet.WebApi.SelfHost&#xff0c;如下&#xff1a; 注意版本哦&#xff0c;最高版本只能4.0.30506能用。 1.配置路由 public static class WebApiConfig{public static void Register(this HttpSelfHostConfiguration config){// …

【数据结构】树的基本概念 | 入门树以及二叉树必熟知

树的学习过程中&#xff0c;二叉树比较重要&#xff0c;但是在学习二叉树之前&#xff0c;得先需要了解到一些数的概念。 树的定义 树是一种非线性的数据结构&#xff0c;它是由 n&#xff08;n > 0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它…

兼顾陪读|自由职业者赴美国加州大学尔湾分校访学

I老师出国访学除了提升自己的科研水平外&#xff0c;主要目标还是以陪伴孩子上学为主。最终我们为其落实了排名还不错的加州大学尔湾分校的职位&#xff0c;这对于已多年脱离科研工作岗位&#xff0c;学术背景非常薄弱的I老师来说相当不易。 I老师背景&#xff1a; 申请类型&a…

需求分析BSA法

&#x1f449;BSA法&#xff08;Basic–Satisfier–Attractor&#xff09;是对客户需求进行优先级划分的需求分析方法。该模型体现了需求满足度和客户满意度之间的非线性关系。BSA法将客户需求分为3种类型&#xff0c;分别是基本型需求、满意型需求和兴奋型需求。下面将对每种需…