NKASG commited on
Commit
a62244b
·
verified ·
1 Parent(s): 7530ea2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +101 -51
app.py CHANGED
@@ -1,54 +1,104 @@
1
- from ultralytics import YOLO
2
  import cv2
3
- import cvzone
4
- import math
5
- import imutils
6
- from imutils.video import VideoStream
7
-
8
- cap = cv2.VideoCapture(0)#'rtsp://admin:[email protected]:554/Streaming/Channels/1')
9
- cap.set(3, 640)
10
- cap.set(4, 128)
11
-
12
-
13
-
14
- model = YOLO("best20.pt")
15
-
16
- classNames = ['person', 'Gun' ]
17
-
18
- while True:
19
- success, frame = cap.read()
20
-
21
- result = model(frame, stream=True)
22
 
23
- for r in result:
24
- boxes = r.boxes
25
- for box in boxes:
26
- # bounding box
27
- x1, y1, x2, y2 = box.xyxy[0]
28
- x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
29
- w, h = x2 - x1, y2 - y1
30
-
31
- #confidence
32
-
33
- conf = math.ceil((box.conf[0] * 100)) / 100
34
-
35
- #className
36
-
37
- cls = int(box.cls[0])
38
- currentClass = classNames[cls]
39
-
40
- if currentClass == "Gun" and conf > 0.4:
41
- print(conf)
42
-
43
- cvzone.cornerRect(frame, (x1, y1, w, h), l=9, rt=5, colorR=(255, 0, 0))
44
- cvzone.putTextRect(frame, f'{conf}{currentClass}', (max(0, x1), max(0, y1)))
45
- print(conf)
46
-
47
- frame = imutils.resize(frame, width=1200)
48
- cv2.imshow('AsimCodeCam', frame)
49
- key = cv2.waitKey(1) & 0xFF
50
- if key == ord('q'):
51
- break
52
 
53
- cv2.destroyAllWindows()
54
- video_stream.stop()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
  import cv2
3
+ import requests
4
+ import os
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
+ from ultralytics import YOLO
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
+ file_urls = [
9
+ 'https://www.dropbox.com/s/b5g97xo901zb3ds/pothole_example.jpg?dl=1',
10
+ 'https://www.dropbox.com/s/86uxlxxlm1iaexa/pothole_screenshot.png?dl=1',
11
+ 'https://www.dropbox.com/s/7sjfwncffg8xej2/video_7.mp4?dl=1'
12
+ ]
13
+
14
+ def download_file(url, save_name):
15
+ url = url
16
+ if not os.path.exists(save_name):
17
+ file = requests.get(url)
18
+ open(save_name, 'wb').write(file.content)
19
+
20
+ for i, url in enumerate(file_urls):
21
+ if 'mp4' in file_urls[i]:
22
+ download_file(
23
+ file_urls[i],
24
+ f"video.mp4"
25
+ )
26
+ else:
27
+ download_file(
28
+ file_urls[i],
29
+ f"image_{i}.jpg"
30
+ )
31
+
32
+ model = YOLO('best20.pt')
33
+ path = [['image_0.jpg'], ['image_1.jpg']]
34
+ video_path = [['video.mp4']]
35
+
36
+ def show_preds_image(image_path):
37
+ image = cv2.imread(image_path)
38
+ outputs = model.predict(source=image_path)
39
+ results = outputs[0].cpu().numpy()
40
+ for i, det in enumerate(results.boxes.xyxy):
41
+ cv2.rectangle(
42
+ image,
43
+ (int(det[0]), int(det[1])),
44
+ (int(det[2]), int(det[3])),
45
+ color=(0, 0, 255),
46
+ thickness=2,
47
+ lineType=cv2.LINE_AA
48
+ )
49
+ return cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
50
+
51
+ inputs_image = [
52
+ gr.components.Image(type="filepath", label="Input Image"),
53
+ ]
54
+ outputs_image = [
55
+ gr.components.Image(type="numpy", label="Output Image"),
56
+ ]
57
+ interface_image = gr.Interface(
58
+ fn=show_preds_image,
59
+ inputs=inputs_image,
60
+ outputs=outputs_image,
61
+ title="Pothole detector app",
62
+ examples=path,
63
+ cache_examples=False,
64
+ )
65
+
66
+ def show_preds_video(video_path):
67
+ cap = cv2.VideoCapture(video_path)
68
+ while(cap.isOpened()):
69
+ ret, frame = cap.read()
70
+ if ret:
71
+ frame_copy = frame.copy()
72
+ outputs = model.predict(source=frame)
73
+ results = outputs[0].cpu().numpy()
74
+ for i, det in enumerate(results.boxes.xyxy):
75
+ cv2.rectangle(
76
+ frame_copy,
77
+ (int(det[0]), int(det[1])),
78
+ (int(det[2]), int(det[3])),
79
+ color=(0, 0, 255),
80
+ thickness=2,
81
+ lineType=cv2.LINE_AA
82
+ )
83
+ yield cv2.cvtColor(frame_copy, cv2.COLOR_BGR2RGB)
84
+
85
+ inputs_video = [
86
+ gr.components.Video(type="filepath", label="Input Video"),
87
+
88
+ ]
89
+ outputs_video = [
90
+ gr.components.Image(type="numpy", label="Output Image"),
91
+ ]
92
+ interface_video = gr.Interface(
93
+ fn=show_preds_video,
94
+ inputs=inputs_video,
95
+ outputs=outputs_video,
96
+ title="Pothole detector",
97
+ examples=video_path,
98
+ cache_examples=False,
99
+ )
100
+
101
+ gr.TabbedInterface(
102
+ [interface_image, interface_video],
103
+ tab_names=['Image inference', 'Video inference']
104
+ ).queue().launch()