|
import streamlit as st |
|
import cv2 |
|
import numpy as np |
|
from PIL import Image |
|
|
|
|
|
st.title("Analisador de Imagens Médicas com OpenCV") |
|
st.subheader("Carregue uma imagem médica para análise e melhoria.") |
|
|
|
|
|
uploaded_file = st.file_uploader("Envie a imagem médica (formatos aceitos: .jpg, .png, .jpeg)", type=["jpg", "png", "jpeg"]) |
|
|
|
if uploaded_file is not None: |
|
|
|
image = Image.open(uploaded_file) |
|
image = np.array(image) |
|
|
|
|
|
st.image(image, caption="Imagem Original", use_column_width=True) |
|
|
|
|
|
st.sidebar.header("Opções de Processamento") |
|
process_option = st.sidebar.selectbox("Escolha o processamento:", |
|
["Conversão para Escala de Cinza", |
|
"Filtro de Borrão (Blur)", |
|
"Detecção de Bordas (Canny)", |
|
"Equalização de Histograma"]) |
|
|
|
if process_option == "Conversão para Escala de Cinza": |
|
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) |
|
st.image(gray_image, caption="Imagem em Escala de Cinza", use_column_width=True, channels="GRAY") |
|
|
|
elif process_option == "Filtro de Borrão (Blur)": |
|
blur_image = cv2.GaussianBlur(image, (5, 5), 0) |
|
st.image(blur_image, caption="Imagem com Filtro de Borrão", use_column_width=True) |
|
|
|
elif process_option == "Detecção de Bordas (Canny)": |
|
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) |
|
edges = cv2.Canny(gray_image, 100, 200) |
|
st.image(edges, caption="Bordas Detectadas", use_column_width=True, channels="GRAY") |
|
|
|
elif process_option == "Equalização de Histograma": |
|
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) |
|
equalized_image = cv2.equalizeHist(gray_image) |
|
st.image(equalized_image, caption="Imagem com Histograma Equalizado", use_column_width=True, channels="GRAY") |
|
|
|
|
|
if st.button("Salvar Imagem Processada"): |
|
result_path = "imagem_processada.png" |
|
cv2.imwrite(result_path, eval(process_option.lower().replace(" ", "_") + "_image")) |
|
|
|
|