practisebook commited on
Commit
58b9573
·
verified ·
1 Parent(s): 2491844

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +69 -0
app.py ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from ultralytics import YOLO
3
+ import cv2
4
+ from gtts import gTTS
5
+ import os
6
+ import tempfile
7
+
8
+ # Load YOLOv8 model
9
+ @st.cache_resource
10
+ def load_model():
11
+ return YOLO('yolov8n.pt') # Automatically downloads YOLOv8 pre-trained model
12
+
13
+ model = load_model()
14
+
15
+ # Streamlit app title
16
+ st.title("Real-Time Object Detection for Blind Assistance")
17
+ st.write("This application detects objects in real-time from a webcam feed and provides audio feedback.")
18
+
19
+ # Start detection button
20
+ start_detection = st.button("Start Real-Time Detection")
21
+
22
+ if start_detection:
23
+ # Open webcam
24
+ st.write("Starting webcam... Press 'q' to stop.")
25
+ cap = cv2.VideoCapture(0) # 0 for default webcam, change if multiple webcams are connected
26
+
27
+ # Check if webcam is opened
28
+ if not cap.isOpened():
29
+ st.write("Error: Could not open webcam.")
30
+ else:
31
+ stframe = st.empty() # Placeholder for video frames
32
+
33
+ while cap.isOpened():
34
+ ret, frame = cap.read()
35
+ if not ret:
36
+ break
37
+
38
+ # Perform object detection
39
+ results = model(frame)
40
+
41
+ # Get detected object names
42
+ detected_objects = [model.names[int(box.cls)] for box in results[0].boxes]
43
+
44
+ # Generate audio feedback
45
+ if detected_objects:
46
+ objects_text = ", ".join(set(detected_objects))
47
+ summary_text = f"Detected: {objects_text}."
48
+ st.write(summary_text) # Display detected objects in Streamlit
49
+
50
+ # Convert text to speech with gTTS
51
+ tts = gTTS(text=summary_text, lang='en')
52
+ audio_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3")
53
+ tts.save(audio_file.name)
54
+ os.system(f"mpg123 {audio_file.name}") # Play the audio summary
55
+
56
+ # Annotate frame with bounding boxes
57
+ annotated_frame = results[0].plot()
58
+
59
+ # Display the annotated frame in Streamlit
60
+ stframe.image(annotated_frame, channels="BGR", use_column_width=True)
61
+
62
+ # Break the loop on 'q' key press
63
+ if cv2.waitKey(1) & 0xFF == ord('q'):
64
+ break
65
+
66
+ # Release webcam and close OpenCV windows
67
+ cap.release()
68
+ cv2.destroyAllWindows()
69
+ st.write("Real-Time Detection Stopped.")