-
Notifications
You must be signed in to change notification settings - Fork 0
/
proyecto.py
64 lines (56 loc) · 2.88 KB
/
proyecto.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Importando los modulos para el servidor web
import os # Modulo para el uso del sistema operativo
import flask # Modulo principal para el manejo de servidores web
from flask import render_template, request # Librerías dentro de Flask para procesar plantillas HTML y solicitudes hacia el servidor
from werkzeug.utils import secure_filename # Conjunto de herramientas seguras
# Importando el modulo para cargar la red neuronal entrenada
from keras.models import load_model
# Importando el modulo que nos permite cargar y editar imágenes
import numpy as np # Uso de arreglos
import cv2
# Creando el entorno
# Usamos __name__ cuando se ejecuta el documento desde acá, no sin importar librerias
entorno = flask.Flask(__name__, template_folder="plantillas_web")
# Definimos la ruta del folder
UPLOAD_FOLDER = 'static'
# Configuracion del entorno estático
entorno.config["UPLOAD_FOLDER"] = UPLOAD_FOLDER
# Cargando el modelo
modelo = load_model("modelo.h5")
# Funcion para detectar neumonía usando el modelo entrenado
def detectar(modelo1, ruta_imagen):
imagen_leida = cv2.imread(ruta_imagen, cv2.IMREAD_GRAYSCALE)
imagen_redimensionada = cv2.resize(imagen_leida, (250, 250))
imagen_en_matriz = np.array(imagen_redimensionada).reshape(-1, 250, 250, 1)
imagen_en_matriz = imagen_en_matriz / 255.
imagen_en_matriz = np.array(imagen_en_matriz)
prediccion = modelo1.predict([imagen_en_matriz])
if prediccion[0][0]>0.5:
return "Positivo" # Tiene Neumonía
else:
return "Negativo" # No tiene Neumonía
# Creando la ruta del index
@entorno.route("/", methods=['GET','POST'])
def index(nombre_imagen="person1_virus_8.jpeg", pagina_act="index.html"):
if request.method == 'POST':
imagen_recibida = request.files['imagen1']
nombre_imagen = secure_filename(imagen_recibida.filename)
imagen_recibida.save(os.path.join(entorno.config['UPLOAD_FOLDER'], nombre_imagen))
resultado = detectar(modelo, os.path.join(entorno.config['UPLOAD_FOLDER'], nombre_imagen))
with open('imagen_analizar.txt', 'w') as f:
f.write(nombre_imagen)
return render_template("resultados.html", resultado=resultado, nombre_imagen=nombre_imagen)
else:
with open('imagen_analizar.txt', 'r') as f:
nombre_imagen = f.read()
return render_template("index.html", nombre_imagen=nombre_imagen, pagina_act=pagina_act)
# Creando la ruta para le saludo al usuario
@entorno.route("/resultados")
def resultado(nombre_imagen="person1_virus_8.jpeg"):
with open('imagen_analizar.txt', 'r') as f:
nombre_imagen = f.read()
resultado = "Negativo"
return render_template("resultados.html", resultado=resultado, nombre_imagen=nombre_imagen)
# Mostrando el entorno creado
if __name__ == "__main__":
entorno.run(debug=True, port=8003, host="0.0.0.0")