Spaces:
Build error
Build error
import streamlit as st | |
import cv2 | |
import numpy as np | |
from PIL import Image as PILImage | |
from ultralytics import YOLO | |
from model import DetectNet | |
st.set_page_config(page_title="Crack Detection", page_icon=":mag:", layout="centered") | |
st.title("Crack Detection using YOLO V8") | |
# Load YOLO model | |
yolo = YOLO("best.pt") | |
save_dir = "detect.png" | |
model = DetectNet(yolo, save_name=save_dir) | |
uploaded_file = st.file_uploader("Upload an image", type=["png", "jpg", "jpeg"]) | |
if uploaded_file is not None: | |
# Convert the uploaded file to an OpenCV image | |
file_bytes = np.frombuffer(uploaded_file.read(), np.uint8) | |
img = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR) | |
# Run detection | |
result = model(img) | |
# Hiển thị ảnh sau khi detect | |
detected_img = cv2.imread(save_dir) | |
# Chuyển BGR sang RGB để hiển thị trên Streamlit | |
detected_img_rgb = cv2.cvtColor(detected_img, cv2.COLOR_BGR2RGB) | |
st.image(detected_img_rgb, caption="Detected Image") | |
# Xuất kết quả | |
if len(result) == 0: | |
st.write("No crack found") | |
elif len(result) == 1: | |
area, score = result[0] | |
st.write( | |
f"Crack predicted accuracy: {score:.2f}%\n" | |
f"The area of crack is: {area:.2f} cm²" | |
) | |
else: | |
for i, out in enumerate(result): | |
area, score = out | |
st.write( | |
f"Crack {i+1} predicted accuracy: {score:.2f}%\n" | |
f"The area of crack {i+1} is: {area:.2f} cm²\n" | |
) | |