import streamlit as st import cv2 from ultralytics import YOLO import torch # Konfigurasi CONFIDENCE_THRESHOLD = 0.80 model = YOLO("best.pt") st.title("🧫 CerfixScan - Real-time Cervix Detection") st.markdown("Deteksi serviks secara real-time langsung dari webcam menggunakan YOLOv8.") run = st.checkbox('Mulai Kamera') FRAME_WINDOW = st.image([]) camera = cv2.VideoCapture(0) while run: ret, frame = camera.read() if not ret: st.warning("Tidak bisa mengakses webcam.") break # Deteksi pakai YOLO results = model(frame)[0] # Filter hasil berdasarkan threshold filtered_boxes = [] for box in results.boxes: if box.conf.item() >= CONFIDENCE_THRESHOLD: filtered_boxes.append(box) if filtered_boxes: results.boxes = type(results.boxes)(torch.stack([b.data for b in filtered_boxes])) annotated_frame = results.plot() else: annotated_frame = frame FRAME_WINDOW.image(annotated_frame, channels="BGR") camera.release()