def procesa_objetivos(): "Genera un grafico con las imagenes y las distancias de prediccion" # Parametros de plot (graficos) plt.rcParams["axes.grid"] = False plot_num = 8 fig, ax = plt.subplots(2, plot_num) axi = np.ravel(ax) for i in range(plot_num): # Seleccionamos dos imagen aleatorias directorio = random.choice(os.listdir(path)) # Imagen A archivo_a = path + directorio + '/' + random.choice( os.listdir(path + directorio)) img_a, img_a_proces = prepara_imagen(archivo_a) # Imagen B directorio = random.choice(os.listdir(path)) archivo_b = path + directorio + '/' + random.choice( os.listdir(path + directorio)) img_b, img_b_proces = prepara_imagen(archivo_b) # Prediccion sobre las imagenes usando la red entrenada predicciones = modelo.predict(np.array([img_a_proces, img_b_proces])) # Mide la distancia entre ambos vectores distancia = Utiles.distancia(predicciones[0], predicciones[1]) # Dibuja los graficos # A etiqueta = etiquetas[predicciones[0].argmax()] muestra_imagen(axi, i, img_a, etiqueta, distancia) # B etiqueta = etiquetas[predicciones[1].argmax()] muestra_imagen(axi, i + plot_num, img_b, etiqueta) plt.show()
def organiza_objetivos(p_actual, lista_p): """Devuelve una lista de objetivos en ordenados segun su distancia mutua desde un punto""" orden_objetivos = [] objetivo_anterior = p_actual for i in range(len(lista_p)): distancias = [Utiles.distancia(x, objetivo_anterior) for x in lista_p] menor = np.argmin(distancias) objetivo_anterior = lista_p[menor] orden_objetivos.append(lista_p[menor]) lista_p = np.delete(lista_p, menor, axis=0) return np.array(orden_objetivos)
def objetivo_prioritario(punto, objetivos, distancia_max=0): """Devuelve el objetivo prioritario segun la distancia a la posicion actual de la torreta""" if (len(objetivos) < 1): return None puntos_centro = Utiles.centros_rectangulos(objetivos) objetivo_anterior = punto distancias = [ Utiles.distancia(x, objetivo_anterior) for x in puntos_centro ] menor = np.argmin(distancias) # Si el punto mas cercano esta lo suficientemente cerca no se devuelve nada if distancia_max and np.min(distancias) > distancia_max: return np.array([]) return objetivos[menor]
axi = np.ravel(ax) # Directorio raiz de imagenes extraidas path = "Entrada/Objetivos/" # Seleccionamos imagenes aleatorias y comparamos su distancia for i in range(plot_num): # Seleccionamos dos imagen aleatorias directorio = random.choice(os.listdir(path)) # Imagen A archivo_a = path + directorio + '/' + random.choice( os.listdir(path + directorio)) img_a, img_a_proces = prepara_imagen(archivo_a) # Imagen B directorio = random.choice(os.listdir(path)) archivo_b = path + directorio + '/' + random.choice( os.listdir(path + directorio)) img_b, img_b_proces = prepara_imagen(archivo_b) # Prediccion sobre las imagenes usando la red entrenada predicciones = modelo.predict(np.array([img_a_proces, img_b_proces])) # Mide la distancia entre ambos vectores distancia = Utiles.distancia(predicciones[0], predicciones[1]) # Dibuja los graficos # A etiqueta = etiquetas[predicciones[0].argmax()] muestra_imagen(axi, i, img_a, etiqueta, distancia) # B etiqueta = etiquetas[predicciones[1].argmax()] muestra_imagen(axi, i + plot_num, img_b, etiqueta) plt.show()