find_line_segments.py

# Эта работа лицензирована по лицензии MIT.
# Copyright (c) 2013-2023 OpenMV LLC. All rights reserved.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Пример поиска отрезков линий
#
# Этот пример демонстрирует, как находить отрезки линий на изображении. Для каждого объекта линии
# найденного на изображении, возвращается объект линии, который включает угол её поворота.

# find_line_segments() находит линии конечной длины (но работает медленно).
# Используйте find_line_segments() для поиска конечных линий (работает быстро).

import csi
import time

ENABLE_LENS_CORR = False  # включите для более прямых линий...

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # градации серого работают быстрее
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

clock = time.clock()

# У всех линий также есть атрибуты `x1`, `y1`, `x2` и `y2` для получения координат их конечных точек.
# Объекты линий можно передавать напрямую в `draw_line()`.

while True:
    clock.tick()
    img = csi0.snapshot()
    if ENABLE_LENS_CORR:
        img.lens_corr(1.8)  # для объектива 2,8 мм...

    # `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, color=(255, 0, 0))
        # print(l)

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

results matching ""

    No results matching ""