python opencv检测直线 cv2.HoughLinesP的实现

针对“python opencv检测直线 cv2.HoughLinesP的实现”,以下是一份完整攻略。

一、关于cv2.HoughLinesP函数

cv2.HoughLinesP是OpenCV中检测直线的函数,通过应用霍夫变换来完成这个过程。它能够在图像中检测到一组直线,并返回一组由起点和终点组成的(x1, y1, x2, y2)值的坐标。

cv2.HoughLinesP函数的参数如下:

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

各参数含义如下:

  • image:需要检测直线的8位单通道图像。
  • rho:参数rho表示以像素为单位的距离精度。一般情况下,设置为1.0。
  • theta:参数theta表示以弧度为单位的角度精度。一般情况下,设置为π/180。
  • threshold:参数threshold表示检测直线时使用的最小投票数。最小投票数越高,检测出的直线越少,默认为100。
  • lines:表示经检测所得到的直线的参数对(x1, y1, x2, y2)组成的list。
  • minLineLength:表示可以检测的直线的最小长度。默认值为0,可以设置为10。
  • maxLineGap:表示同一行内,两条直线之间的最大间隔。默认值为0,可以设置为5。

二、使用cv2.HoughLinesP函数检测直线

以下我们通过两个实例来演示如何使用cv2.HoughLinesP函数检测直线。

实例1:检测图像中所有的横向直线

import cv2
import numpy as np

# 读入一张图像
image = cv2.imread('image.png')

# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 阈值处理
ret, thresh = cv2.threshold(gray, 180, 255, cv2.THRESH_BINARY)

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

# 进行霍夫直线检测
lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength=100, maxLineGap=10)

# 在原图上标记检测出的直线
for line in lines:
    x1, y1, x2, y2 = line[0]
    cv2.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)

# 展示结果
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上代码将从一张图像中检测出所有的横向直线并在原图上进行标记。

实例2:检测图像中所有的竖向直线

import cv2
import numpy as np

# 读入一张图像
image = cv2.imread('image.png')

# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 阈值处理
ret, thresh = cv2.threshold(gray, 180, 255, cv2.THRESH_BINARY)

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

# 进行霍夫直线检测
lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength=100, maxLineGap=10)

# 对检测出的直线进行角度判断,筛选出竖直线
for line in lines:
    x1, y1, x2, y2 = line[0]
    # 判断直线的角度是否接近于竖直
    if abs(x2 - x1) < abs(y2 - y1):
        cv2.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)

# 展示结果
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上代码将从一张图像中检测出所有的竖向直线并在原图上进行标记。

三、总结

通过以上两个实例,我们可以将cv2.HoughLinesP函数的使用过程进行总结:

  1. 通过一系列处理(如转灰度、阈值处理、边缘检测等)得到一张二值化的图像;
  2. 调用cv2.HoughLinesP函数,并传入上一步得到的图像;
  3. 根据实际需要设置检测直线时使用的参数(如横向直线或竖向直线);
  4. 对返回的直线参数进行处理,标记在原图上。

希望这份攻略可以对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python opencv检测直线 cv2.HoughLinesP的实现 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Python使用PyYAML库读写yaml文件的方法

    当需要处理YAML文件时,可以使用PyYAML库来读取和写入YAML文件。本文将详细介绍Python如何使用PyYAML库读写YAML文件的方法,并提供两个实例说明。 安装PyYAML库 使用PyYAML库时需要先安装,使用pip命令可以轻松安装PyYAML: pip install PyYAML 读取YAML文件 示例一 以下示例演示了如何使用PyYAML…

    python 2023年5月13日
    00
  • Matlab中plot基本用法的具体使用

    当我们使用Matlab进行数据可视化时,最常用的方法之一是使用plot函数。plot函数可以将数据以线条的方式呈现出来,并可设置线条的颜色、宽度、风格等属性。以下是Matlab中plot函数的基本用法和具体实践攻略: 基本用法 plot函数的基本用法如下所示: plot(x,y) 其中,x和y分别是数据点的横坐标和纵坐标,可以是向量、矩阵或数字。如果x和y是…

    python 2023年5月18日
    00
  • 详解Python Counter对象的概率计算

    Python中的Counter对象是用于计数的数据结构,它可以轻松地对一个可迭代对象中的元素进行计数。Counter对象计数后会以字典的形式返回结果,其中键是元素,值是元素出现的次数。在计算概率的过程中,Counter对象可以很好地辅助我们进行统计。 下面是使用Python Counter对象计算概率的步骤: 对样本空间进行计数,得到一个Counter对象(…

    python-answer 2023年3月25日
    00
  • python 环境变量和import模块导入方法(详解)

    Python环境变量和import模块导入方法是Python编程中非常重要的概念。本文将详细讲解Python环境变量和import模块导入方法,包括如何设置Python环境变量、如何使用import导入模块、如何使用from…import导入模块等。 Python环境变量 Python环境变量是指Python解释器在运行时使用的一些配置参数。Python…

    python 2023年5月15日
    00
  • Python散点图与折线图绘制过程解析

    在Python中,可以使用第三方库matplotlib来绘制散点图和折线图。以下是绘制散点图和折线图的详细攻略: 安装依赖库 要绘制散点图和折线图,需要安装matplotlib库。可以使用以下命令安装: pip install matplotlib 绘制散点图 要绘制散点图,可以使用matplotlib库的scatter()函数。以下是绘制散点图的示例: i…

    python 2023年5月14日
    00
  • python程序实现BTC(比特币)挖矿的完整代码

    实现比特币挖矿的完整代码是一项复杂的任务。以下是一些步骤,可帮助您开始编写这种代码,并向您展示一些示例。 1. 了解比特币挖矿的基础知识 在编写比特币挖矿代码之前,您需要了解比特币挖矿的基础知识。比特币是一种基于区块链技术的加密货币。它的设计目的是通过参与挖矿来保障比特币交易的安全性和稳定性。比特币挖矿需要高性能计算机来解决复杂的数学难题,以获得比特币。 2…

    python 2023年6月3日
    00
  • 详解Python 逗号的使用方法

    Python 逗号是一种非常常见的符号,具有多种用途。在下面的回答中,我将详细讲解Python逗号的使用方法。 一、函数参数的分隔符 在Python函数中,逗号是用于分隔函数参数的分隔符。例如: def greet(name, age, gender): print(f"Hello, my name is {name}, and I am a {g…

    python-answer 2023年3月25日
    00
  • python实现监听键盘

    下面是详细讲解“python实现监听键盘”的攻略,分为以下几个步骤: 步骤一:安装必要的库 使用Python实现监听键盘需要安装pynput库。可以通过以下命令进行安装: pip install pynput 步骤二:创建监听器 需要创建一个函数用于监听键盘输入,以下是一个示例: from pynput.keyboard import Key, Listen…

    python 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部