Create processar_imagem_de_entrada.py
Browse files
processar_imagem_de_entrada.py
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import time
|
3 |
+
import torch
|
4 |
+
import numpy as np
|
5 |
+
import cv2
|
6 |
+
|
7 |
+
# Função para processar a imagem de entrada
|
8 |
+
def processar_imagem_de_entrada(img, modelo, pipe, salvar_resultado=False):
|
9 |
+
try:
|
10 |
+
# Faça uma cópia da imagem original
|
11 |
+
img = img.copy()
|
12 |
+
|
13 |
+
# Coloque o modelo na GPU (se disponível) e configure-o para modo de avaliação
|
14 |
+
pipe = pipe.to(device).eval()
|
15 |
+
|
16 |
+
# Registre o tempo de início
|
17 |
+
start = time.time()
|
18 |
+
|
19 |
+
# Pré-processe a imagem e obtenha informações de dimensão
|
20 |
+
img, h, w, ori_gray, ori = ordenar_e_preprocessar_imagem(img, modelo)
|
21 |
+
|
22 |
+
# Converta a imagem para o formato esperado pelo modelo e coloque-a na GPU
|
23 |
+
img = torch.FloatTensor(img).unsqueeze(0).to(device)
|
24 |
+
|
25 |
+
# Realize a inferência do modelo sem gradientes
|
26 |
+
with torch.no_grad():
|
27 |
+
if modelo == 'AngioNet':
|
28 |
+
img = torch.cat([img, img], dim=0)
|
29 |
+
logit = np.round(torch.softmax(pipe.forward(img), dim=1).detach().cpu().numpy()[0, 0]).astype(np.uint8)
|
30 |
+
|
31 |
+
# Calcule o tempo decorrido
|
32 |
+
spent = time.time() - start
|
33 |
+
spent = f"{spent:.3f} segundos"
|
34 |
+
|
35 |
+
# Redimensione o resultado, se necessário
|
36 |
+
if h != 512 or w != 512:
|
37 |
+
logit = cv2.resize(logit, (h, w))
|
38 |
+
|
39 |
+
# Converta o resultado para um formato booleano
|
40 |
+
logit = logit.astype(bool)
|
41 |
+
|
42 |
+
|
43 |
+
# Salve o resultado em um arquivo se a opção estiver ativada
|
44 |
+
if salvar_resultado:
|
45 |
+
nome_arquivo = os.path.join(caminho_salvar_resultado, f'resultado_{int(time.time())}.png')
|
46 |
+
cv2.imwrite(nome_arquivo, img_out)
|
47 |
+
|
48 |
+
return spent, img_out
|
49 |
+
|
50 |
+
except Exception as e:
|
51 |
+
# Em caso de erro, retorne uma mensagem de erro
|
52 |
+
return str(e), None
|