Spaces:
Sleeping
Sleeping
# Contents of ~/my_app/pages/🫁 LungCancerDetection.py | |
import streamlit as st | |
import cv2 | |
import pydicom | |
import numpy as np | |
from PIL import Image | |
import os | |
import sys | |
from streamlit_image_zoom import image_zoom | |
st.markdown("<h1 style='text-align: center;'>Welcome to Scan Pages</h1>", unsafe_allow_html=True) | |
def convert_dcm_to_png(input_image_path, output_image_path='a.png'): | |
ds = pydicom.dcmread(input_image_path) | |
img = ds.pixel_array | |
img = cv2.normalize(img, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8) | |
cv2.imwrite(output_image_path, img) | |
with st.sidebar: | |
st.markdown("## Upload your scans") | |
uploaded_files = st.file_uploader("Choose scans...", type=["jpg", "jpeg", "png", "dicom"], accept_multiple_files=True) | |
with st.expander("Hướng dẫn"): | |
st.markdown("1. Tải lên ảnh Scan của bạn bằng cách ấn vào **Browse files** hoặc có thể **Kéo và thả** file ảnh của bạn vào phần browse files. Các định dạng cho phép bao gồm **DICOM, PNG, JPG, JPEG**, các định dạng khác cần phải chuyển về các định dạng được chấp nhận.") | |
st.markdown("2. Sau đó ảnh sẽ tự được mở lên") | |
st.markdown("3. Để phóng to ảnh, bạn chuyển chuột trái vào trong ảnh, dùng lăn chuột để thực hiện phóng to- thu nhỏ ảnh") | |
st.markdown("4. Để kéo xuống xem ảnh phía dưới, bạn di chuột ra ngoài vùng ảnh và dùng lăn chuột cuộn trang như bình thường.") | |
if uploaded_files: | |
for uploaded_file in uploaded_files: | |
file_type = uploaded_file.name.split('.')[-1].lower() | |
if file_type in ["jpg", "jpeg", "png"]: | |
img = Image.open(uploaded_file) | |
img.save('temp_image.png') | |
st.markdown("<div style='display: flex; justify-content: center;'>", unsafe_allow_html=True) | |
width, height = img.size | |
image_zoom(img, mode="both",size=(int(width/2),int(height/2)), keep_aspect_ratio=True, zoom_factor=4.0, increment=0.2) | |
st.markdown("</div>", unsafe_allow_html=True) | |
elif file_type in ["dicom", "dcm"]: | |
convert_dcm_to_png(uploaded_file) | |
img = Image.open('a.png').convert('RGB') | |
img.save('temp_image.png') | |
st.markdown("<div style='display: flex; justify-content: center;'>", unsafe_allow_html=True) | |
width, height = img.size | |
image_zoom(img, mode="both",size=(width//4, height//4), keep_aspect_ratio=True, zoom_factor=4.0, increment=0.2) | |
st.markdown("</div>", unsafe_allow_html=True) | |
else: | |
st.info("Please upload some scans to view them.") | |