|
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
-
- from typing import Callable
- from dora import Node
-
- import cv2
- import numpy as np
- import torch
-
- model = torch.hub.load("ultralytics/yolov5", "yolov5n")
-
- node = Node()
-
- for event in node:
- match event["type"]:
- case "INPUT":
- match event["id"]:
- case "image":
- print("[object detection] received image input")
- frame = event["value"].to_numpy()
- frame = cv2.imdecode(frame, -1)
- frame = frame[:, :, ::-1] # OpenCV image (BGR to RGB)
- results = model(frame) # includes NMS
- arrays = np.array(results.xyxy[0].cpu()).tobytes()
-
- node.send_output("bbox", arrays, event["metadata"])
- case other:
- print("[object detection] ignoring unexpected input:", other)
- case "STOP":
- print("[object detection] received stop")
- case "ERROR":
- print("[object detection] error: ", event["error"])
- case other:
- print("[object detection] received unexpected event:", other)
|