File size: 1,446 Bytes
2eecfbc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
__author__ = "Marlon"
__Cop__ = "BrainiaC©"

import numpy as np
import cv2
import os
import streamlit as st
from streamlit_drawable_canvas import st_canvas
from tensorflow.keras.models import load_model

st.title('Detector Numérico - BrainiaC©')

# Caminho do modelo salvo corretamente
model_path = os.path.join(os.path.dirname(__file__), 'model.keras')  # Certifique-se de salvar como .keras
weights_path = "weights.weights.h5"  # Certifique-se de salvar os pesos corretamente

# Carregar o modelo e os pesos
model = load_model(model_path)
model.load_weights(weights_path)

st.write("###### Author - Marlon Sousa")
st.write("###### [Blog](https://marlonsousa.medium.com)")

st.markdown('''
Tente Desenhar um Número!
''')

canvas_result = st_canvas(
    fill_color='#000000',
    stroke_width=20,
    stroke_color='#FFFFFF',
    background_color='#000000',
    width=300,
    height=300,
    key='canvas'
)

if canvas_result.image_data is not None:
    img = canvas_result.image_data.astype('uint8')  # Garante que a imagem seja uint8
    img = cv2.cvtColor(img, cv2.COLOR_RGBA2GRAY)  # Converte para escala de cinza
    img = cv2.resize(img, (28, 28))  # Redimensiona para 28x28 pixels
    img = img / 255.0  # Normaliza os valores dos pixels
    img = img.reshape(1, 28, 28, 1)  # Adiciona dimensão extra para o modelo

    if st.button('Predict'):
        val = model.predict(img)
        st.write(f"""# Resultado: {np.argmax(val[0])}""")