jukrapopk commited on
Commit
c3dd12a
·
1 Parent(s): 64b5200

refactor: optimize frame processing by removing sleep

Browse files
Files changed (1) hide show
  1. app.py +36 -41
app.py CHANGED
@@ -38,48 +38,43 @@ def frame_processor(session_id: str):
38
  next_frame_time = time.time()
39
 
40
  while True:
41
- ret, frame = cap.read()
42
-
43
- # measure FPS
44
- frame_count += 1
45
- now = time.time()
46
- if now - last_time >= rolling_duration:
47
- session.measured_fps = frame_count / (now - last_time)
48
- session.cpu_usage = psutil.cpu_percent(interval=None)
49
- frame_count = 0
50
- last_time = now
51
-
52
- if not ret:
53
- cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
54
- continue
55
- else:
56
- if session.show_stats:
57
- font = cv2.FONT_HERSHEY_SIMPLEX
58
- font_scale = 1
59
- thickness = 2
60
- color = (0, 255, 0)
61
- text =f"""
62
- ID: {session_id}
63
- FPS: {session.measured_fps:.0f}
64
- CPU: {session.cpu_usage:02.0f}%
65
- """
66
-
67
- y0, dy = 30, 36
68
- for i, line in enumerate(text.split('\n')):
69
- (text_width, text_height), _ = cv2.getTextSize(line, font, font_scale, thickness)
70
- x = frame.shape[1] - text_width - 10
71
- y = y0 + (i - 1) * dy
72
- cv2.putText(frame, line, (x, y), font, font_scale, color, thickness, cv2.LINE_AA)
73
-
74
  # control framerate
75
- next_frame_time += frame_duration
76
- sleep_time = next_frame_time - time.time()
77
- if sleep_time > 0:
78
- time.sleep(sleep_time)
79
- else:
80
- next_frame_time = time.time()
81
-
82
- session.latest_frame = frame
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
 
84
  def stream_mjpeg(session_id: str):
85
  global sessions
 
38
  next_frame_time = time.time()
39
 
40
  while True:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  # control framerate
42
+ if time.time() >= next_frame_time:
43
+ ret, frame = cap.read()
44
+
45
+ # measure FPS
46
+ frame_count += 1
47
+ now = time.time()
48
+ if now - last_time >= rolling_duration:
49
+ session.measured_fps = frame_count / (now - last_time)
50
+ session.cpu_usage = psutil.cpu_percent(interval=None)
51
+ frame_count = 0
52
+ last_time = now
53
+
54
+ if not ret:
55
+ cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
56
+ continue
57
+ else:
58
+ if session.show_stats:
59
+ font = cv2.FONT_HERSHEY_SIMPLEX
60
+ font_scale = 1
61
+ thickness = 2
62
+ color = (0, 255, 0)
63
+ text =f"""
64
+ ID: {session_id}
65
+ FPS: {session.measured_fps:.0f}
66
+ CPU: {session.cpu_usage:02.0f}%
67
+ """
68
+
69
+ y0, dy = 30, 36
70
+ for i, line in enumerate(text.split('\n')):
71
+ (text_width, text_height), _ = cv2.getTextSize(line, font, font_scale, thickness)
72
+ x = frame.shape[1] - text_width - 10
73
+ y = y0 + (i - 1) * dy
74
+ cv2.putText(frame, line, (x, y), font, font_scale, color, thickness, cv2.LINE_AA)
75
+ session.latest_frame = frame
76
+
77
+ next_frame_time += frame_duration
78
 
79
  def stream_mjpeg(session_id: str):
80
  global sessions