Example: 05-Feature-Detection/find_line_segments.py

# 本作品采用MIT许可证授权。
# 版权所有 (c) 2013-2023 OpenMV LLC。保留所有权利。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# 查找线段示例
#
# 此示例展示了如何在图像中查找线段。对于每个线条对象,
# 将返回包含该直线旋转角度的数据结构。

# find_line_segments() 查找有限长度的线条(但速度较慢)。
# 使用 find_line_segments() 查找非无限长的线条(速度较快)。

import sensor
import time

ENABLE_LENS_CORR = False  # 开启以获得更直的线条...

sensor.reset()
sensor.set_pixformat(sensor.RGB565)  # 灰度处理速度更快
sensor.set_framesize(sensor.QQVGA)
sensor.skip_frames(time=2000)
clock = time.clock()

# 所有线条还提供`x1()`、`y1()`、`x2()`和`y2()`方法以获取其端点
# 以及`line()`方法将所有上述值作为一个四元组返回,供`draw_line()`使用。

while True:
    clock.tick()
    img = sensor.snapshot()
    if ENABLE_LENS_CORR:
        img.lens_corr(1.8)  # 适用于2.8mm镜头...

    # `merge_distance` 控制附近线条的合并。默认值为 0 时,不进行
    # 合并。当值为 1 时,任何距离另一条线 1 像素的线条将被合并... 以此类推,
    # 随着该值的增加。您可能希望合并线条,因为线段检测
    # 会产生大量线段结果。

    # `max_theta_diff` 控制即将合并的两条线之间的最大旋转差异。
    # 默认设置允许 15 度的差异。

    for l in img.find_line_segments(merge_distance=0, max_theta_diff=5):
        img.draw_line(l.line(), color=(255, 0, 0))
        # 打印(l)

    print("FPS %f" % clock.fps())

results matching ""

    No results matching ""