find_line_segments.py

# Esta obra está licenciada bajo la licencia MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Todos los derechos reservados.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Ejemplo de búsqueda de segmentos de línea
#
# Este ejemplo muestra cómo encontrar segmentos de línea en la imagen. Para cada objeto de línea
# encontrado en la imagen se devuelve un objeto de línea que incluye su rotación.

# find_line_segments() encuentra líneas de longitud finita (pero es lento).
# Use find_line_segments() para encontrar líneas no infinitas (y es rápido).

import csi
import time

ENABLE_LENS_CORR = False  # actívelo para obtener líneas más rectas...

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # la escala de grises es más rápida
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

clock = time.clock()

# Todas las líneas también tienen atributos `x1`, `y1`, `x2` y `y2` para obtener sus puntos finales.
# Los objetos de línea se pueden pasar directamente a `draw_line()`.

while True:
    clock.tick()
    img = csi0.snapshot()
    if ENABLE_LENS_CORR:
        img.lens_corr(1.8)  # para lente de 2.8mm...

    # `merge_distance` controla la fusión de líneas cercanas. En 0 (el valor predeterminado), no
    # se realiza fusión. En 1, cualquier línea a 1 píxel de otra se fusiona... y así
    # sucesivamente a medida que aumenta este valor. Puede que desee fusionar líneas, ya que la detección de segmentos de línea
    # produce muchos resultados de segmentos de línea.

    # `max_theta_diff` controla la cantidad máxima de diferencia de rotación entre
    # dos líneas que están por fusionarse. La configuración predeterminada permite 15 grados.

    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 ""