Spaces:
Runtime error
Runtime error
| import av | |
| import cv2 | |
| import streamlit as st | |
| from streamlit_webrtc import WebRtcMode, webrtc_streamer | |
| import torch | |
| from sample_utils.turn import get_ice_servers | |
| st.markdown( | |
| "# Object detection with YOLO" | |
| ) | |
| # YOLO estandar model | |
| model_yolo = torch.hub.load('Ultralytics/yolov5','yolov5s', pretrained = True, verbose = False) | |
| model_yolo.eval() | |
| labels = model_yolo.names | |
| person_class_index = 0 | |
| def callback(frame: av.VideoFrame) -> av.VideoFrame: | |
| # Get the image | |
| img = frame.to_ndarray(format="bgr24") | |
| # Preprocessing image | |
| scale = 3 # percent of original size | |
| width = int(img.shape[1] / scale) | |
| height = int(img.shape[0] / scale) | |
| dim = (width, height) | |
| img2 = cv2.resize(img, dim, interpolation = cv2.INTER_AREA) | |
| # model detections results | |
| detections = model_yolo(img2) | |
| #print(detections) | |
| # Draw bounding boxes | |
| for detection in detections.xyxy[0]: | |
| x1, y1, x2, y2, p, category_id = detection | |
| x1, y1, x2, y2, category_id = int(x1), int(y1), int(x2), int(y2), int(category_id) | |
| #if category_id == person_class_index: | |
| #cv2.rectangle(img, (x1*scale, y1*scale), (x2*scale, y2*scale), (55,139,241), 2) | |
| cv2.putText(img, | |
| labels[category_id], | |
| (x1*scale, y1*scale - 5), | |
| cv2.FONT_HERSHEY_TRIPLEX, | |
| 0.5, (255,255,255), 1) | |
| xc = int((x1+x2)*scale/2.0) | |
| yc = int((y1+y2)*scale/2.0) | |
| cv2.circle(img, (xc, yc), 10, (255,255,255), -1) | |
| cv2.line(img, (x1*scale, y1*scale), (xc, yc), (255,255,255), 2) | |
| return av.VideoFrame.from_ndarray(img, format="bgr24") | |
| webrtc_streamer( | |
| key="opencv-filter", | |
| mode=WebRtcMode.SENDRECV, | |
| rtc_configuration={"iceServers": get_ice_servers()}, | |
| video_frame_callback=callback, | |
| media_stream_constraints={"video": True, "audio": False}, | |
| async_processing=True, | |
| ) | |
| st.markdown( | |
| "This demo is based on " | |
| "https://github.com/whitphx/streamlit-webrtc-example. " | |
| "Many thanks to the project." | |
| ) |