【OpenCV】cv2.HoughLines()霍夫直线检测

这篇具有很好参考价值的文章主要介绍了【OpenCV】cv2.HoughLines()霍夫直线检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【OpenCV】cv2.HoughLines()霍夫直线检测

0. 介绍

霍夫直线检测(Hough Line Transform)是一种在图像中检测直线的经典算法。它通过将二维图像空间中的点映射到极坐标空间中,将直线检测问题转化为在参数空间中找到交点的问题。

原理:

  • 对于图像空间中的每个边缘点,计算其对应在极坐标空间中可能的直线。
  • 极坐标空间中的直线由两个参数表示:极径(rho)和极角(theta)。
  • 极径rho表示直线到图像中心的距离,极角theta表示直线与x轴的夹角。
  • 极坐标空间中,使用累加器来记录每个参数组合的投票数,投票数高的参数组合表示在图像空间中存在一条直线。
  • 根据设定的阈值,选择投票数高于阈值的直线参数作为检测结果。

应用:

  • 边缘检测:霍夫直线检测常用于图像边缘检测后的处理,可以进一步分析并提取直线特征。
  • 车道线检测:在自动驾驶和驾驶辅助系统中,霍夫直线检测被广泛应用于检测和识别道路上的车道线。
  • 图像拼接:在全景图像拼接中,霍夫直线检测可以用于检测重叠区域的直线特征,并对图像进行对齐和融合。
  • 文档分析:在文档图像处理中,霍夫直线检测可用于检测表格的边界、文字行的分割等任务。
  • 工业自动化:霍夫直线检测可以应用于工业环境中的缺陷检测、位置定位等。

需要注意的是,霍夫直线检测对于噪声和图像质量较为敏感,可能需要进行图像预处理和参数调整来获取准确的直线检测结果。此外,霍夫直线检测还有一些改进算法,例如概率霍夫直线变换等,用于提高检测的效率和准确性。

1. 函数

cv.HoughLines(image, rho, theta, threshold[, lines[, srn[, stn[, min_theta[, max_theta]]]]]) -> lines

参数:

  • lines:数组,每一个元素都是一条直线对应的(ρ, θ),ρ以像素为单位,θ以弧度为单位。
  • image:输入图像,需要是二值图像,所以在应用hough变换之前应用阈值或canny边缘检测。
  • rho:ρ的精度。
  • theta:θ的精度。
  • threshold:阈值,得票数高于该值的线才被认为是线,由于投票数取决于线上的点数,所以它代表了应该被检测到的线的最小点数。

2. 代码

import cv2
import numpy as np
 
img = cv2.imread('a.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
 
lines = cv2.HoughLines(edges,1,np.pi/180,200)
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)
 
cv2.imwrite('houghlines3.jpg',img)

3. 效果

cv2 霍夫直线,计算机视觉,Opencv,opencv,计算机视觉,python文章来源地址https://www.toymoban.com/news/detail-745566.html

到了这里,关于【OpenCV】cv2.HoughLines()霍夫直线检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 霍夫变换直线检测算法实现OpenCV(C++)

    一、原理 对于霍夫变换的原理这里就不进行描述啦,感兴趣的可以自行搜索。也可以看知乎上面的这篇贴文通俗易懂理解——霍夫变换原理。 二、算法代码 三、效果测试 测试代码 上述代码中的drawLine()函数是《OpenCV4快速入门》一书的代码清单 7-2中的原函数,只用于画线。

    2024年02月05日
    浏览(45)
  • 图解 cv2.HoughLines & cv2.line 参数原理

    功能实现: 利用cv.HoughLines寻找图像中霍夫直线,然后用cv2.line绘制红色的直线。 拓展: 计算整幅图像的平均灰度值,以及经过筛选的霍夫直线的平均灰度值,并进行比较。 目录 一、效果图以及参数讲解  二、图解霍夫直线的返回参数 三、源码(包含注释) 四、拓展  图

    2023年04月09日
    浏览(37)
  • [图解]cv2.HoughLines() 和 cv2.HoughLinesP()原理和代码

    理论 如上图,左边a,b固定可以确定一条直线,线是() 组成的集合. 下面从xy空间变化到ab空间,此时给定一个绿点()可以确定一条绿色的线,给定一个蓝点  ()可以确定一条蓝色的线,绿线和蓝线相交的点就是左边确定红线的参数a和b.此时xy空间里红线上的其他点,变换到ab空间必过蓝绿

    2024年02月06日
    浏览(53)
  • 【OpenCV-Python】——边缘和轮廓&Laplacian/Sobel/Canny边缘检测&查找/绘制轮廓及轮廓特征&霍夫直线/圆变换

    目录 前言: 1、边缘检测 1.1 Laplacian边缘检测  1.2 Sobel边缘检测  1.3 Canny边缘检测 2、图像轮廓 2.1 查找轮廓  2.2 绘制轮廓 2.3 轮廓特征 3、霍夫变换 3.1 霍夫直线变换  3.2 霍夫圆变换 总结: 图像的边缘是指图像中灰度值急剧变化的位置,边缘检测的目的是为了绘制边缘线条。

    2024年01月23日
    浏览(47)
  • 【OpenCV常用函数:轮廓检测+外接矩形检测】cv2.findContours()+cv2.boundingRect()

    对具有黑色背景的二值图像寻找白色区域的轮廓,因此一般都会先经过cvtColor()灰度化和threshold()二值化后的图像作为输入。 例如,如下的轮廓检测出的结果contours和hierarchy。 根据轮廓点检测对应轮廓的外接矩形

    2024年02月13日
    浏览(53)
  • opencv 边缘检测 cv2.Canny()详解

    👨‍💻 个人简介: 深度学习图像领域工作者 🎉 总结链接:              链接中主要是个人工作的总结,每个链接都是一些常用demo,代码直接复制运行即可。包括:                     📌 1.工作中常用深度学习脚本                     📌 2.to

    2024年02月03日
    浏览(55)
  • 基于cv2的手势识别-计算机视觉

      闲的无聊做的一个小玩意,可以调用你的计算机相机,识别框内的手势(剪刀、石头和布),提供一个判决平台,感兴趣的可以继续完善。 用到的参考小文献: 具体实现结果如下 并且我另写了一个框架平台,可以进行下一步的功能拓展,发在我的资源界面了;   我们

    2024年02月01日
    浏览(51)
  • 霍夫变换直线检测原理和应用

    今天我们将重点讨论霍夫变换,这是一种非常经典的线检测的算法,通过将图像中的点映射到参数空间中的线来实现。霍夫变换可以检测任何方向的线,并且可以在具有大量噪声的图像中很好地工作。 闲话少说,我们直接开始吧! 为了理解霍夫变换的工作原理,首先我们需

    2024年02月06日
    浏览(93)
  • opencv进阶14-Harris角点检测-cv2.cornerHarris

    类似于人的眼睛和大脑,OpenCV可以检测图像的主要特征并将这 些特征提取到所谓的图像描述符中。然后,可以将这些特征作为数据 库,支持基于图像的搜索。此外,我们可以使用关键点将图像拼接起 来,组成更大的图像。(想象一下把很多图片放到一起组成一幅360°的全景

    2024年02月11日
    浏览(77)
  • opencv基础57-模板匹配cv2.matchTemplate()->(目标检测、图像识别、特征提取)

    OpenCV 提供了模板匹配(Template Matching)的功能,它允许你在图像中寻找特定模板(小图像)在目标图像中的匹配位置。模板匹配在计算机视觉中用于目标检测、图像识别、特征提取等领域。 以下是 OpenCV 中使用模板匹配的基本步骤: 加载图像 : 首先,加载目标图像和要匹配

    2024年02月13日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包