Beispiel #1
0
def actualiza_objetivo(objetivo, objetivos):
    "Actualiza el objetivo si se mueve"
    # No hay nuevos objetivos, nos quedamos con el que se detecto
    if (len(objetivos) < 1):
        return objetivo
    # Elimina las detecciones del tracker con area muy distinta del objetivo
    x, y, w, h = objetivo
    area_objetivo = w * h
    rectangulos = Utiles.genera_rectangulos(objetivos)
    rectangulos = Utiles.elimina_rect_irelevantes(rectangulos, area_objetivo)
    # Los objetivos no eran suficientemente similares en area
    if (len(rectangulos) < 1):
        return objetivo
    # Cambia el objetivo por el mas cercano detectado por el tracker
    distancia_max = max(w, h)
    p_objetivo = Utiles.centro_rectangulo(objetivo)
    objetivo_alt = Selector.objetivo_prioritario(p_objetivo, rectangulos,
                                                 distancia_max)
    if (len(objetivo_alt) > 0):
        return objetivo_alt
    # No habia un objetivo lo suficientemete cercano
    return objetivo