HoughLinesP

简介: HoughLinesP“【5月更文挑战第16天】”

cv2.HoughLinesP 函数的返回值是一个二维数组(numpy.ndarray),其中每一行代表一条检测到的直线。这个数组中的每一行是一个形状为 (1, 4) 的数组,表示一条直线的两个端点的坐标:((x1, y1), (x2, y2))

返回值的数据类型

返回值是一个 numpy 数组,具体类型为 numpy.ndarray

遍历返回值

要遍历 HoughLinesP 函数返回的数组,您可以像处理任何其他 numpy 数组一样进行迭代。以下是如何遍历这个数组的示例:

# 假设 lines 是 cv2.HoughLinesP 返回的数组
for line in lines:
    x1, y1, x2, y2 = line[0]  # 每一行包含一条直线的两个端点
    # 现在您可以使用 x1, y1, x2, y2 来表示这条直线
    # 例如,绘制这条直线
    print(f"Line endpoints: ({x1}, {y1}) to ({x2}, {y2})")
    # 如果需要,绘制直线
    cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 1)

在这个循环中,我们首先从每一行中提取直线的端点坐标,然后可以对每条直线进行进一步的处理,比如打印出来或者绘制到图像上。

完整示例

以下是使用 cv2.HoughLinesP 检测直线并绘制它们的完整示例:

import cv2
import numpy as np

# 读取图像,转换为灰度图,然后进行边缘检测
img = cv2.imread('1.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 150)

# 检测直线
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(img, (x1, y1), (x2, y2), (0, 0, 255), 1)

# 显示带有直线的图像
cv2.imshow('Image with Lines', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个示例中,我们首先读取了一张图像,然后将其转换为灰度图,并使用 Canny 算法进行边缘检测。接着,我们使用 HoughLinesP 函数检测图像中的直线,并通过遍历返回的数组将每条直线绘制到原图上。最后,我们显示了带有直线的图像。

目录
相关文章
|
11天前
RGB颜色模型和HSV颜色模型
RGB颜色模型和HSV颜色模型“【5月更文挑战第22天】”
26 2
|
18天前
|
人工智能 弹性计算 算法
一文解读:阿里云AI基础设施的演进与挑战
对于如何更好地释放云上性能助力AIGC应用创新?“阿里云弹性计算为云上客户提供了ECS GPU DeepGPU增强工具包,帮助用户在云上高效地构建AI训练和AI推理基础设施,从而提高算力利用效率。”李鹏介绍到。目前,阿里云ECS DeepGPU已经帮助众多客户实现性能的大幅提升。其中,LLM微调训练场景下性能最高可提升80%,Stable Difussion推理场景下性能最高可提升60%。
125361 266
|
18天前
|
存储 关系型数据库 MySQL
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀
本篇文章来讨论MySQL字段的字符类型选择并深入实践char与varchar类型的区别以及在千万数据下的性能测试
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀
|
11天前
|
存储 弹性计算 监控
【阿里云弹性计算】阿里云 ECS 性能优化秘籍:提升应用响应速度与资源利用率
【5月更文挑战第22天】阿里云ECS优化涉及实例规格选择、OS与应用配置、网络配置、存储优化及数据库连接池管理。合理挑选CPU和内存,关闭无关服务,利用EIP和负载均衡优化网络,选择合适存储类型,并通过监控工具进行性能分析和压力测试,以提升响应速度,优化资源利用率,降低成本,增强企业竞争力。示例展示了Java数据库连接池配置优化。通过持续探索和实践,可最大化发挥ECS潜力。
90 7
|
9天前
|
监控 应用服务中间件 nginx
使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)
ELK的架构有多种,本篇分享使用的架构如图所示: Beats(Filebeat) -> -> Elasticsearch -> Kibana,目前生产环境一天几千万的日志,内存占用大概 10G
41 4
|
9天前
|
缓存 前端开发 测试技术
使用GraphQL进行高效数据查询的技术指南
【5月更文挑战第24天】GraphQL是Facebook开源的查询语言,用于高效数据查询,解决RESTful API的过度获取、不足获取及冗余问题。它允许客户端指定所需数据,实现按需获取,具有客户端定义查询、灵活性和可扩展性、减少API数量等优势。GraphQL基于类型和模式工作,通过定义模式、实现解析器、整合前后端及测试优化来实现查询。适用于灵活数据需求、复杂关联查询和实时数据更新的场景,但也存在学习成本高、服务器实现复杂和性能优化问题。
|
18天前
|
Rust Java 开发者
5月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区5月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
1411 148
|
5天前
|
网络协议 前端开发 Java
Websocket (帧格式, 握手过程, Spring 中使用 WebScoket 协议)
Websocket (帧格式, 握手过程, Spring 中使用 WebScoket 协议)
20 4
|
5天前
|
安全 Java API
多线程(JUC, ReentrantLock, 原子类, 线程池, 信号量 Semaphore, CountDownLatch)
多线程(JUC, ReentrantLock, 原子类, 线程池, 信号量 Semaphore, CountDownLatch)
23 4
|
5天前
|
前端开发 JavaScript
从 0 开始实现一个网页聊天室 (小型项目)(下)
从 0 开始实现一个网页聊天室 (小型项目)
39 16