File size: 2,360 Bytes
64c11ed
 
 
 
 
 
6b2a8f7
64c11ed
6b2a8f7
 
64c11ed
 
6b2a8f7
64c11ed
 
84e0d1c
6b2a8f7
64c11ed
0e01414
64c11ed
0e01414
 
 
 
e3a2ad8
0e01414
e3a2ad8
0e01414
 
e3a2ad8
 
64c11ed
 
0e01414
 
64c11ed
 
 
 
e3a2ad8
 
 
 
 
 
64c11ed
 
e3a2ad8
64c11ed
 
 
 
 
 
 
0e01414
64c11ed
 
6b2a8f7
64c11ed
 
 
6b2a8f7
64c11ed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6b2a8f7
64c11ed
 
6b2a8f7
 
1a4be85
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import gradio as gr
import cv2
import os

from ultralytics import YOLO

# Remove the URLs containing 'mp4'
file_urls = [
    'Cyst.jpg',
    'Stone.jpg'
]

# Do not download files from URLs, use local files directly

model = YOLO('best.pt')
path = [['Cyst.jpg'], ['Stone.jpg'],['Normal.jpg']]


def detect_objects_on_image(image_path):
    image = cv2.imread(image_path)
    model = YOLO("best.pt")
    results = model.predict(image_path)
    result = results[0]
    output = []

    for box in result.boxes:
        x1, y1, x2, y2 = [round(x) for x in box.xyxy[0].tolist()]
        class_id = box.cls[0].item()
        prob = round(box.conf[0].item(), 2)
        output.append([x1, y1, x2, y2, result.names[class_id], prob])

        cv2.rectangle(
            image,
            (x1, y1),
            (x2, y2),
            color=(0, 0, 255),
            thickness=2,
            lineType=cv2.LINE_AA
        )

        # Change font and size
        font = cv2.FONT_HERSHEY_SIMPLEX
        font_size = 0.5  # Adjust the font size as needed
        cv2.putText(image, result.names[class_id], (x1, y1), font, font_size, (36, 255, 12), 1)

    return cv2.cvtColor(image, cv2.COLOR_BGR2RGB)


inputs_image = [
    gr.components.Image(type="filepath", label="Input Image"),
]
outputs_image = [
    gr.components.Image(type="numpy", label="Output Image"),
]
interface_image = gr.Interface(
    fn=detect_objects_on_image,
    inputs=inputs_image,
    outputs=outputs_image,
    title="Kidney Stone and Cyst detection",
    examples=path,
    cache_examples=False,
)
'''
def show_preds_video(video_path):
    cap = cv2.VideoCapture(video_path)
    while(cap.isOpened()):
        ret, frame = cap.read()
        if ret:
            frame_copy = frame.copy()
            outputs = model.predict(source=frame)
            results = outputs[0].cpu().numpy()
            for i, det in enumerate(results.boxes.xyxy):
                cv2.rectangle(
                    frame_copy,
                    (int(det[0]), int(det[1])),
                    (int(det[2]), int(det[3])),
                    color=(0, 0, 255),
                    thickness=2,
                    lineType=cv2.LINE_AA
                )
            yield cv2.cvtColor(frame_copy, cv2.COLOR_BGR2RGB)
'''

gr.TabbedInterface(
    [interface_image],
    tab_names=['Shamim MD Jony']
).launch(share=True)