DHEIVER commited on
Commit
70115bb
·
verified ·
1 Parent(s): ac77b7b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -12
app.py CHANGED
@@ -14,38 +14,71 @@ if uploaded_file is not None:
14
  # Carregar a imagem com OpenCV
15
  image = Image.open(uploaded_file)
16
  image = np.array(image)
17
-
18
  # Mostrar a imagem original
19
  st.image(image, caption="Imagem Original", use_column_width=True)
20
-
21
  # Opções de processamento
22
  st.sidebar.header("Opções de Processamento")
23
  process_option = st.sidebar.selectbox("Escolha o processamento:",
24
  ["Conversão para Escala de Cinza",
25
  "Filtro de Borrão (Blur)",
26
  "Detecção de Bordas (Canny)",
27
- "Equalização de Histograma"])
28
-
 
 
29
  if process_option == "Conversão para Escala de Cinza":
30
  gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
31
  st.image(gray_image, caption="Imagem em Escala de Cinza", use_column_width=True, channels="GRAY")
32
-
33
  elif process_option == "Filtro de Borrão (Blur)":
34
- blur_image = cv2.GaussianBlur(image, (5, 5), 0)
 
35
  st.image(blur_image, caption="Imagem com Filtro de Borrão", use_column_width=True)
36
-
37
  elif process_option == "Detecção de Bordas (Canny)":
38
  gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
39
- edges = cv2.Canny(gray_image, 100, 200)
 
 
40
  st.image(edges, caption="Bordas Detectadas", use_column_width=True, channels="GRAY")
41
-
42
  elif process_option == "Equalização de Histograma":
43
  gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
44
  equalized_image = cv2.equalizeHist(gray_image)
45
  st.image(equalized_image, caption="Imagem com Histograma Equalizado", use_column_width=True, channels="GRAY")
46
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  # Botão para salvar o resultado
48
  if st.button("Salvar Imagem Processada"):
49
  result_path = "imagem_processada.png"
50
- cv2.imwrite(result_path, eval(process_option.lower().replace(" ", "_") + "_image"))
51
-
 
 
 
14
  # Carregar a imagem com OpenCV
15
  image = Image.open(uploaded_file)
16
  image = np.array(image)
17
+
18
  # Mostrar a imagem original
19
  st.image(image, caption="Imagem Original", use_column_width=True)
20
+
21
  # Opções de processamento
22
  st.sidebar.header("Opções de Processamento")
23
  process_option = st.sidebar.selectbox("Escolha o processamento:",
24
  ["Conversão para Escala de Cinza",
25
  "Filtro de Borrão (Blur)",
26
  "Detecção de Bordas (Canny)",
27
+ "Equalização de Histograma",
28
+ "Ajuste de Brilho e Contraste",
29
+ "Detecção de Contornos"])
30
+
31
  if process_option == "Conversão para Escala de Cinza":
32
  gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
33
  st.image(gray_image, caption="Imagem em Escala de Cinza", use_column_width=True, channels="GRAY")
34
+
35
  elif process_option == "Filtro de Borrão (Blur)":
36
+ ksize = st.sidebar.slider("Tamanho do kernel de desfoque:", min_value=3, max_value=15, step=2, value=5)
37
+ blur_image = cv2.GaussianBlur(image, (ksize, ksize), 0)
38
  st.image(blur_image, caption="Imagem com Filtro de Borrão", use_column_width=True)
39
+
40
  elif process_option == "Detecção de Bordas (Canny)":
41
  gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
42
+ threshold1 = st.sidebar.slider("Threshold 1:", min_value=50, max_value=150, value=100)
43
+ threshold2 = st.sidebar.slider("Threshold 2:", min_value=100, max_value=300, value=200)
44
+ edges = cv2.Canny(gray_image, threshold1, threshold2)
45
  st.image(edges, caption="Bordas Detectadas", use_column_width=True, channels="GRAY")
46
+
47
  elif process_option == "Equalização de Histograma":
48
  gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
49
  equalized_image = cv2.equalizeHist(gray_image)
50
  st.image(equalized_image, caption="Imagem com Histograma Equalizado", use_column_width=True, channels="GRAY")
51
+
52
+ elif process_option == "Ajuste de Brilho e Contraste":
53
+ brightness = st.sidebar.slider("Brilho:", min_value=-100, max_value=100, value=0)
54
+ contrast = st.sidebar.slider("Contraste:", min_value=-100, max_value=100, value=0)
55
+ adjusted_image = cv2.convertScaleAbs(image, alpha=1 + (contrast / 100), beta=brightness)
56
+ st.image(adjusted_image, caption="Imagem com Ajuste de Brilho e Contraste", use_column_width=True)
57
+
58
+ elif process_option == "Detecção de Contornos":
59
+ gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
60
+ threshold = st.sidebar.slider("Threshold para Contornos:", min_value=50, max_value=255, value=127)
61
+ _, thresh = cv2.threshold(gray_image, threshold, 255, cv2.THRESH_BINARY)
62
+ contours, _ = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
63
+ contour_image = cv2.drawContours(image.copy(), contours, -1, (0, 255, 0), 2)
64
+ st.image(contour_image, caption="Contornos Detectados", use_column_width=True)
65
+
66
+ # Exibição do histograma
67
+ st.sidebar.header("Exibir Histograma")
68
+ if st.sidebar.checkbox("Mostrar histograma da imagem"):
69
+ if len(image.shape) == 3:
70
+ colors = ("b", "g", "r")
71
+ for i, color in enumerate(colors):
72
+ hist = cv2.calcHist([image], [i], None, [256], [0, 256])
73
+ st.line_chart(hist[:, 0])
74
+ else:
75
+ hist = cv2.calcHist([image], [0], None, [256], [0, 256])
76
+ st.line_chart(hist[:, 0])
77
+
78
  # Botão para salvar o resultado
79
  if st.button("Salvar Imagem Processada"):
80
  result_path = "imagem_processada.png"
81
+ cv2.imwrite(result_path, locals()[process_option.lower().replace(" ", "_") + "_image"])
82
+ st.success(f"Imagem salva como {result_path}")
83
+ else:
84
+ st.info("Por favor, envie uma imagem médica para começar.")