首页 > 编程语言 >Lnton羚通视频分析算法平台OpenCV-Python 教程 Hough直线变换

Lnton羚通视频分析算法平台OpenCV-Python 教程 Hough直线变换

时间:2023-09-04 18:01:29浏览次数:49  
标签:直线 Python 检测 cv2 变换 霍夫 OpenCV 羚通 图像

OpenCV Python Hough直线变换

霍夫直线变换(Hough Transform)是一种在图像中检测直线的技术。它可以帮助我们从图像中鲜明地检测出直线段,并且对于噪声和不完整的线段也有较好的鲁棒性。

霍夫直线变换的基本思想是将直线表示为参数空间中的曲线,通过统计参数空间中的交点来检测直线。

以下是霍夫直线变换的基本步骤:

边缘检测:

对输入图像进行边缘检测操作,例如使用Canny算子。

得到二值化的边缘图像,其中边缘像素为非零值,非边缘像素为零值。

构建霍夫空间:

定义霍夫空间,在二维情况下,霍夫空间通常由两个参数表示,如极坐标系下的角度和距离。

对每个边缘像素,在霍夫空间中遍历所有可能的直线,并将对应的霍夫空间中的计数器加一。

检测直线:

根据霍夫空间中的计数器值,找到具有足够高投票数量的参数组合,这些组合对应于图像中的直线。

可以通过设定阈值来控制检测到的直线数量。

输出直线:

将检测到的直线参数转换回图像坐标空间,得到检测到的直线的端点。

import cv2
import numpy as np

# 读入图像
img = cv2.imread('assets/sudoku.png')

# 灰度化
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

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

# 直线检测
lines = cv2.HoughLines(edges, rho=1, theta=np.pi/180, threshold=150 )


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.imshow("line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Lnton羚通视频分析算法平台OpenCV-Python 教程 Hough直线变换_边缘像素

Lnton 羚通霍夫直线变换广泛应用于图像处理和计算机视觉领域,特别是在直线检测、图像分析、图像配准和边缘检测等任务中。

在实际应用中,OpenCV 是一个常用的计算机视觉库,提供了霍夫直线变换的实现方法和函数。您可以使用 OpenCV 中的 cv2.HoughLines() 函数来进行霍夫直线变换的计算和处理。

Lnton羚通视频分析算法平台OpenCV-Python 教程 Hough直线变换_边缘像素_02


标签:直线,Python,检测,cv2,变换,霍夫,OpenCV,羚通,图像
From: https://blog.51cto.com/LNTON/7353835

相关文章

  • python 计算两个日期之间的时间差,并将其转换为秒数
    python计算两个日期之间的时间差,并将其转换为秒数 fromdatetimeimportdatetime,timedelta#创建两个日期对象date1=datetime(2023,7,2)date2=datetime(2023,7,4)#计算时间差,并转换为秒数delta_seconds=int(timedelta.total_seconds(date2-date1))p......
  • Python接口编程:理解、设计和实现
    在当今的软件开发世界中,接口(API)是应用程序之间进行数据交换和通信的关键方式。这种通信可以在同一应用程序的各组件之间,也可以在完全不同的系统和平台之间进行。Python作为一种功能强大的编程语言,因其易用性和丰富的库而广泛用于开发接口。理解接口在计算机科学中,接口通常是一种定......
  • Python文件的基本操作
    Python文件的基本操作文件的基本操作文件的读写模式文件的读写操作相关的方法文件的操作模式文件的练习题文件的基本操作1.我们能够操作哪些类型的文件:.txt没有后缀名的文件#我们现在不能操作word、Excel、PPT等文件暂时不能够操作numpy、pandas等模......
  • python开发之微信机器人的二次开发
    简要描述:取消消息接收请求URL:http://域名地址/cancelHttpCallbackUrl请求方式:POST请求头Headers:Content-Type:application/json参数:参数名类型说明codestring1000成功,1001失败msgstring反馈信息成功返回示例{"message":"成功","code":"1000","data":......
  • Python-Virtualenv虚拟环境
    一.为何需要之前我们安装python第三方库时,都是直接通过pipinstallxx的方式进行安装的,这样会使第三方库直接安装到Python系统环境中,同时默认安装的都是最新版本的第三方库 这样安装会存在一个问题:如果用Django1.10.x开发了一个网站,同时有一个用Django0.9开发的旧项目需要......
  • Windows python版本管理工具pyenv
    windows下的python多环境pyenv-win搭建安装pyenv-win在PowerShell中安装建议使用管理员身份打开PowerShellInvoke-WebRequest-UseBasicParsing-Uri"https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1"-OutFile"./insta......
  • Python——8days
    文件的基本操作文件的读写模式(只读,只写,只追写)文件读写操作相关的办法读取文件的优化操作(重要)单用户注册,单用户登录多用户注册,多用户登录文件的操作模式(文本,二进制我们能够操作哪些类型的文件:.txt没有后缀名的文件我们不能操作wordexcelppt等文件暂时不能够操作 numpypand......
  • Centos安装部署Python-3.7
    部署1.下载wgethttps://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz 2.安装依赖,同时安装一下Centos安装部署opensslyuminstalllibffi-developenssl-devel-yyuminstallxz-devel-yyuminstallpython-backports-lzma-y 3.修改文件tar-xfPython-3......
  • 收藏学习!10个让你事半功倍的Python高级库
    对于初学者而言,Python是一门简单易懂、语法清晰、容易上手的编程语言,这也是很多人喜欢Python的原因之一。还有一部分原因,是因为Python拥有大量开箱即用的第三方库,这也是它与其他编程语言最与众不同的地方。本文为大家推荐10个让你事半功倍的Python高级库,建议收藏学习!1、Da......
  • range方法在Python2和Python3中的不同
    range()方法是Python中常用的方法,但是在Python2和Python3中使用方法不同,下面看下它们的不同使用方法。range方法详解range(start,stop[,step])range是python中的其中一个内置函数作用:可创建一个整数列表。一般用在for循环中。参数说明:start:起点,一般和stop搭配使用,既生成从star......