# 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("

Welcome to Scan Pages

", 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("
", 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("
", 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("
", 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("
", unsafe_allow_html=True) else: st.info("Please upload some scans to view them.")