|
- """TODO: Add docstring."""
-
- import numpy as np
- import pyarrow as pa
- from dora import DoraStatus
- from ultralytics import YOLO
-
- CAMERA_WIDTH = 640
- CAMERA_HEIGHT = 480
-
-
- model = YOLO("yolov8n.pt")
-
-
- class Operator:
- """Inferring object from images."""
-
- def on_event(
- self,
- dora_event,
- send_output,
- ) -> DoraStatus:
- """TODO: Add docstring."""
- if dora_event["type"] == "INPUT":
- frame = (
- dora_event["value"].to_numpy().reshape((CAMERA_HEIGHT, CAMERA_WIDTH, 3))
- )
- frame = frame[:, :, ::-1] # OpenCV image (BGR to RGB)
- results = model(frame, verbose=False) # includes NMS
- # Process results
- boxes = np.array(results[0].boxes.xyxy.cpu())
- conf = np.array(results[0].boxes.conf.cpu())
- label = np.array(results[0].boxes.cls.cpu())
- # concatenate them together
- arrays = np.concatenate((boxes, conf[:, None], label[:, None]), axis=1)
-
- send_output("bbox", pa.array(arrays.ravel()), dora_event["metadata"])
-
- return DoraStatus.CONTINUE
|