rosebe commited on
Commit
ad8d6d5
·
1 Parent(s): 668d89d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -24
app.py CHANGED
@@ -138,38 +138,42 @@ def detect_image(image):
138
 
139
  def detect_video(video_path):
140
  video = cv2.VideoCapture(video_path)
 
 
 
 
 
 
 
 
 
 
 
141
  frame_count = 0
142
  while True:
143
  success, frame = video.read()
144
  if not success:
145
  break
146
- frame = model(frame)[0].numpy().astype('uint8')
147
- frame_output_path = f'frame_{frame_count}.jpg' # Replace with your desired output path
148
- cv2.imwrite(frame_output_path, frame)
 
 
 
 
 
 
 
 
 
 
149
  frame_count += 1
150
- video.release()
151
- cv2.destroyAllWindows()
152
 
153
- frame_rate = video.get(cv2.CAP_PROP_FPS)
154
-
155
- image_dir = '.' # Replace with the directory containing the image files (frames)
156
- image_files = sorted(os.listdir(image_dir))
157
-
158
- image_path = os.path.join(image_dir, image_files[0])
159
- frame = cv2.imread(image_path)
160
- height, width, _ = frame.shape
161
-
162
- video_output_path = 'output_video.mp4' # Replace with your desired output video path
163
- fourcc = cv2.VideoWriter_fourcc(*'mp4v') # You can change the codec as needed
164
- video_writer = cv2.VideoWriter(video_output_path, fourcc, frame_rate, (width, height))
165
-
166
- for image_file in image_files:
167
- image_path = os.path.join(image_dir, image_file)
168
- frame = cv2.imread(image_path)
169
- video_writer.write(frame)
170
-
171
  video_writer.release()
172
- return video_writer
 
 
173
 
174
  # Create Gradio interfaces for different modes
175
  img_interface = gr.Interface(
 
138
 
139
  def detect_video(video_path):
140
  video = cv2.VideoCapture(video_path)
141
+ frame_rate = video.get(cv2.CAP_PROP_FPS) # Get the frame rate of the input video
142
+
143
+ # Get the dimensions of the video frames
144
+ width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
145
+ height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
146
+
147
+ # Create a VideoWriter object to write the output video
148
+ video_output_path = 'output_video.mp4' # Replace with your desired output video path
149
+ fourcc = cv2.VideoWriter_fourcc(*'mp4v') # You can change the codec as needed
150
+ video_writer = cv2.VideoWriter(video_output_path, fourcc, frame_rate, (width, height))
151
+
152
  frame_count = 0
153
  while True:
154
  success, frame = video.read()
155
  if not success:
156
  break
157
+
158
+ # Process the frame using your model
159
+ results = model(frame)
160
+ # Access the first detection result
161
+ detection_result = results.pandas().xyxy.iloc[0]
162
+ # Extract the bounding box coordinates
163
+ xmin, ymin, xmax, ymax = detection_result["xmin"], detection_result["ymin"], detection_result["xmax"], detection_result["ymax"]
164
+ # Draw the bounding box on the frame
165
+ frame = cv2.rectangle(frame, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)
166
+
167
+ # Write the frame to the output video
168
+ video_writer.write(frame)
169
+
170
  frame_count += 1
 
 
171
 
172
+ video.release()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  video_writer.release()
174
+
175
+ return video_output_path
176
+
177
 
178
  # Create Gradio interfaces for different modes
179
  img_interface = gr.Interface(