-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathv1
More file actions
53 lines (40 loc) · 1.8 KB
/
v1
File metadata and controls
53 lines (40 loc) · 1.8 KB
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
import cv2
import numpy as np
def tratamento_imagem(imagem_path):
# Carregar a imagem
imagem = cv2.imread(imagem_path)
# Ajustar brilho e contraste
alfa = 1.5 # Fator de contraste
beta = 0 # Valor a ser adicionado após multiplicação
imagem_melhorada = cv2.convertScaleAbs(imagem, alpha=alfa, beta=beta)
# Aplicar filtro Gaussiano para suavizar a imagem
imagem_suavizada = cv2.GaussianBlur(imagem_melhorada, (5, 5), 0)
# Detecção de bordas com Canny
bordas = cv2.Canny(imagem_suavizada, 100, 200)
# Encontrar contornos
contornos, _ = cv2.findContours(bordas, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# Preparar imagem para desenhar contornos encontrados
imagem_contornos = imagem.copy()
# Filtrar contornos que se aproximam de um círculo
for contorno in contornos:
perimetro = cv2.arcLength(contorno, True)
area = cv2.contourArea(contorno)
if perimetro == 0:
continue
circularidade = 4 * np.pi * (area / (perimetro * perimetro))
# Considerar como placa de Petri se a circularidade estiver próxima de 1
if 0.7 < circularidade < 1.2:
# Encontrar o círculo mínimo que cobre o contorno para desenhar
(x, y), raio = cv2.minEnclosingCircle(contorno)
centro = (int(x), int(y))
raio = int(raio)
cv2.circle(imagem_contornos, centro, raio, (0, 255, 0), 2)
# Redimensionar a imagem com contornos para visualização
largura_desejada = 720
altura_desejada = 480
imagem_final = cv2.resize(imagem_contornos, (largura_desejada, altura_desejada))
return imagem_final
imagem_processada = tratamento_imagem('Fotos/cultura_bacteriana.jpg')
cv2.imshow('Imagem Processada', imagem_processada)
cv2.waitKey(0)
cv2.destroyAllWindows()