def search_destroy(image): "Usa Tracking para seguir al objetivo mientras mueve la torreta y dispara" global p_actual global objetivo global objetivos_destruidos global modo centro_objetivo = Utiles.centro_rectangulo(objetivo) p_actual = Motor_Mockup.desplazamiento(p_actual, centro_objetivo) # Utiles.dibuja_puntos(image, [centro]) # x1, y1, x2, y2 = aume nta_roi(objetivo) # cv.imshow("ROI", roi) # coordenadas_reducidas(image) # cv.waitKey(0) # while True: image, objetivos = Tracker.tracker(image) objetivo = Tracker.actualiza_objetivo(objetivo, objetivos) # image = Utiles.atencion_blur(image, objetivo) Utiles.dibuja_contornos(image, objetivos) Utiles.dibuja_rectangulo(image, objetivo, Config.UI.cyan2) image = Utiles.dibuja_mira(image, p_actual) # Comprueba si se puede disparar p_objetivo = Utiles.centro_rectangulo(objetivo) if (destruccion(p_actual, p_objetivo)): image = cv.putText(image, "Bang!", (p_actual[0] + 5, p_actual[1] - 5), 0, 1, Config.UI.rojo, 2, 16) # Limpia la lista de destruidos y agrega el ultimo TODO mejorar objetivos_destruidos.append(objetivo) if (len(objetivos_destruidos) > 3): objetivos_destruidos.pop(0) modo = Config.Modo.deteccion return image
# if(count % Config.Tracker.persistencia == 0 and # len(objetivos_destruidos) > 0): # print("Hola") if modo == Config.Modo.deteccion: if (len(objetivos_destruidos) > 0): Utiles.mascara_destruidos(image, objetivos_destruidos) ROIs = deteccion(image) if (len(ROIs) > 1): # Asigna solo los rectangulos contendores como objetivos objetivos = ROIs[0] # image = Utiles.atencion_blur(image, objetivos[0]) # image = Utiles.multi_atencion_blur(image, objetivos) objetivo = Selector.objetivo_prioritario(p_actual, objetivos) if (objetivo): modo = Config.Modo.search_destroy Utiles.dibuja_rectangulo(image, objetivo, Config.UI.cyan2) image = Utiles.atencion_blur(image, objetivo) else: image = search_destroy(image) cond = False if (cond): modo = Config.Modo.deteccion if Config.VidProp.show_fps: Utiles.dibuja_FPS(image, fps) if Config.VidProp.guardar: Utiles.guardar(out, image) cv.imshow(titulo, image) # TODO solo 10 frames pausa # cv.waitKey(0) # if count > 100: break # count += 1 # TODO solo 10 frames