linear_regression.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 regresión lineal
#
# Este ejemplo muestra cómo usar el método get_regression() en su OpenMV Cam
# para obtener la regresión lineal de una ROI. Con este método puede construir fácilmente
# un robot que pueda seguir líneas que apuntan todas en la misma dirección general
# pero que en realidad no están conectadas. Use find_blobs() en líneas que estén bien
# conectadas para obtener mejores opciones de filtrado y control.
#
# get_regression() se ejecuta en tiempo O(N^2) sobre la imagen. Para mantenerlo manejable,
# escala por área la ROI de origen a un búfer temporal antes de ajustar la línea;
# el tamaño del búfer es configurable mediante el argumento con nombre target_size=(w, h)
# (por defecto (80, 60)). Pase una tupla mayor para operar a mayor resolución.

import csi
import time

THRESHOLD = (0, 100)  # Umbral de escala de grises para cosas oscuras.
BINARY_VISIBLE = True  # Primero un paso binario para ver sobre qué se está ejecutando la regresión lineal.

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000)

clock = time.clock()  # procesar un fotograma a veces.

while True:
    clock.tick()
    img = csi0.snapshot().binary([THRESHOLD]) if BINARY_VISIBLE else csi0.snapshot()

    # Devuelve un objeto línea similar a los objetos línea devueltos por find_lines() y
    # find_line_segments(). Tiene x1, y1, x2, y2, length,
    # theta (rotación en grados), rho y magnitude como atributos.
    #
    # magnitude representa qué tan bien funcionó la regresión lineal. En general,
    # cuanto mayor sea el valor, mejor...
    line = img.get_regression([(255, 255) if BINARY_VISIBLE else THRESHOLD])

    if line:
        img.draw_line(line, color=127)
    print(
        "FPS %f, mag = %s" % (clock.fps(), str(line.magnitude) if (line) else "N/A")
    )

# Sobre los valores negativos de rho:
#
# Una tupla [theta+0:-rho] es igual a [theta+180:+rho].

results matching ""

    No results matching ""