# detection

Python API: `depthai_nodes.message.creators.detection`

## Functions

### create_detection_message

```python
def create_detection_message(bboxes: np.ndarray, scores: np.ndarray, angles: np.ndarray | None = None, labels: np.ndarray | None = None, label_names: list[str] | None = None, keypoints: np.ndarray | None = None, keypoints_scores: np.ndarray | None = None, keypoint_label_names: list[str] | None = None, keypoint_edges: list[tuple[int, int]] | None = None, masks: np.ndarray | None = None) -> dai.ImgDetections:
```

Create native detections with optional keypoints and an instance mask.

Parameters

 * `bboxes` (`np.ndarray`): NumPy array of normalized `(N, 4)` center-XY/width/height boxes. An empty array returns an empty
   detection message immediately.
 * `scores` (`np.ndarray`): NumPy array of shape `(N,)` with detection confidences.
 * `angles` (`np.ndarray | None`): Optional angle per detection in degrees within [-360, 360].
 * `labels` (`np.ndarray | None`): Optional NumPy array of class IDs, one per detection. Values are converted to integers.
 * `label_names` (`list[str] | None`): Optional names in detection order, one per detection. Names are assigned only when `labels`
   is supplied. This is not a class-ID lookup table.
 * `keypoints` (`np.ndarray | None`): Optional coordinates of shape `(N, K, 2)` or `(N, K, 3)`. Two-dimensional points receive
   Z=0.
 * `keypoints_scores` (`np.ndarray | None`): Optional floating-point confidences of shape `(N, K)` in [0, 1]; requires
   `keypoints`.
 * `keypoint_label_names` (`list[str] | None`): Optional list of keypoint names. Currently validated but not attached to the
   output keypoints.
 * `keypoint_edges` (`list[tuple[int, int]] | None`): Optional integer index pairs defining the skeleton for each detection.
 * `masks` (`np.ndarray | None`): Optional HW instance-ID mask, converted to uint8. IDs correspond to detection indexes; reserve
   255 for background. Conversion does not validate representability.

Returns

 * `dai.ImgDetections`: Native detection message with the supplied payload. Caller sets timestamps, sequence number, and
   transformation.

Raises

 * `ValueError`: If supplied arrays or optional metadata fail type, length, shape, or range checks.
 * `IndexError`: If a per-detection name or score array cannot be indexed as required.
