Add dead bug pose detection
This commit is contained in:
+16
-2
@@ -6,6 +6,8 @@ import cv2
|
||||
from loguru import logger
|
||||
from aiortc import RTCPeerConnection, RTCSessionDescription, RTCIceCandidate
|
||||
|
||||
from dead_bug_detector import DeadBugDetector
|
||||
|
||||
|
||||
async def handle_client(websocket):
|
||||
client = websocket.remote_address
|
||||
@@ -40,15 +42,25 @@ async def handle_client(websocket):
|
||||
async def receive_video(track):
|
||||
logger.info("Start receiving video frames")
|
||||
frame_count = 0
|
||||
detector = DeadBugDetector()
|
||||
try:
|
||||
while True:
|
||||
frame = await track.recv()
|
||||
frame_count += 1
|
||||
img = frame.to_ndarray(format="bgr24")
|
||||
cv2.imshow("Android Camera (WebRTC)", img)
|
||||
timestamp_ms = int(frame.time * 1000) if frame.time is not None else frame_count * 33
|
||||
annotated, pose_result = detector.process_frame(img, timestamp_ms)
|
||||
cv2.imshow("Android Camera (WebRTC)", annotated)
|
||||
|
||||
if frame_count % 100 == 0:
|
||||
logger.info(f"Received {frame_count} frames, shape={img.shape}")
|
||||
logger.info(
|
||||
"Received {} frames, shape={}, reps={}, phase={}, feedback={}",
|
||||
frame_count,
|
||||
img.shape,
|
||||
pose_result.rep_count,
|
||||
pose_result.phase.value,
|
||||
" | ".join(pose_result.feedback),
|
||||
)
|
||||
|
||||
if cv2.waitKey(1) & 0xFF == 27:
|
||||
logger.info("ESC pressed, closing display")
|
||||
@@ -57,6 +69,8 @@ async def handle_client(websocket):
|
||||
logger.info("Video receive task cancelled")
|
||||
except Exception as e:
|
||||
logger.error(f"Video receive error: {e}")
|
||||
finally:
|
||||
detector.close()
|
||||
|
||||
@pc.on("track")
|
||||
async def on_track(track):
|
||||
|
||||
Reference in New Issue
Block a user