# supervision 0.30.1 — supervision-0.30.1 - Product: supervision (https://whatsnew.fyi/product/supervision) - Vendor: supervision - Date: 2026-08-24 - Version: 0.30.1 - Original notes: https://github.com/roboflow/supervision/releases/tag/0.30.1 - Permalink: https://whatsnew.fyi/product/supervision/releases/0.30.1 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Add RF-DETR example scripts to count_people_in_zone, heatmap_and_track, speed_estimation, tracking, and traffic_analysis bundled examples - **changed** — sv.box_iou now raises TypeError for complex-valued box coordinates instead of silently discarding the imaginary part - **changed** — DetectionsSmoother.update_with_detections now checks active tracker IDs via set membership instead of scanning per tracked object - **changed** — Documentation and API-reference examples now default to RF-DETR instead of Ultralytics YOLO - **fixed** — RF-DETR speed estimation now measures elapsed source-frame intervals, including gaps when tracked detections are temporarily missed - **fixed** — sv.get_polygon_center now calculates polygon centroids in translated float64 coordinates, preventing integer overflow and precision loss for large-coordinate polygons - **fixed** — sv.Detections.area and sv.oriented_box_iou_batch now translate oriented-box coordinates to local origins before floating-point math, preventing self-IoU collapse for large-coordinate inputs - **fixed** — DetectionsSmoother now keeps oriented-box corners aligned with smoothed xyxy geometry, including rotated tracks and mixed metadata windows - **fixed** — sv.box_iou now calculates overlap in float64, preventing int32 area overflow for large boxes and matching sv.box_iou_batch for realistic coordinate magnitudes - **fixed** — sv.list_files_with_extensions no longer includes directories when listing all files without an extension filter - **fixed** — sv.pillow_to_cv2 now accepts RGBA images when the cv2-free fallback backend is active, matching OpenCV by dropping alpha and returning BGR channels - **fixed** — import supervision no longer loads PyAV's native libraries when the OpenCV backend is selected; PyAV is now imported lazily on first use, preventing duplicate libavdevice warning and possible crash on macOS when both av and opencv-python are installed #### 0.30.1: Numeric-precision and stability fixes supervision 0.30.1 is a bug-fix patch release. It corrects numeric-precision issues that only surface on specific inputs — large-coordinate oriented boxes (geospatial data, stitched frames), large integer boxes for `box_iou`, and rotated tracks in `DetectionsSmoother` — where prior versions could silently return imprecise or self-inconsistent results instead of erroring. It also fixes a duplicate-`libavdevice`-load crash risk on macOS when both `av` and `opencv-python` are installed, plus smaller fixes to `list_files_with_extensions` and the cv2-free RGBA fallback. No public API was added or removed, and no signature changed — a drop-in upgrade from 0.30.0 for virtually all users. See **Migration guide** below for the one narrow exception (`box_iou` on complex-valued coordinates) and for the precision caveats on the numeric fixes. ##### ✨ Spotlights / highlights ###### 1. Oriented-box area/IoU precision fix for large coordinates `sv.Detections.area` and `sv.oriented_box_iou_batch` now translate OBB coordinates to a local origin before floating-point math. Previously, large-coordinate inputs could lose enough precision that a box's IoU with itself collapsed below 1.0. ```python pair_origin = np.minimum(origin_i, origin_j) offset_i = (origin_i - pair_origin).astype(np.float32, copy=False) offset_j = (origin_j - pair_origin).astype(np.float32, copy=False) ``` ###### 2. `sv.box_iou` no longer overflows on large integer boxes Area computation now takes coordinate differences before casting to float, avoiding `int32` overflow. For realistic coordinate magnitudes, `box_iou`'s scalar result now matches `box_iou_batch`. ###### 3. Duplicate `libavdevice` crash fixed on macOS `import supervision` no longer loads PyAV's native libraries when the OpenCV backend is active — PyAV is now imported lazily, only where it's used, preventing a duplicate `libavdevice` warning (and possible crash) when both `av` and `opencv-python` are installed. ###### 4. `DetectionsSmoother` keeps oriented-box corners consistent Smoothed OBB corners are now aligned (start index + winding) to a reference before averaging, so rotated tracks smooth correctly instead of averaging mismatched corner orderings. ###### 5. `sv.get_polygon_center` precision fix for large-coordinate polygons Centroid calculation now translates to the first vertex and computes in `float64` before adding the origin back, preventing integer overflow and precision loss for realistic coordinate magnitudes. ##### 🔄 Migration guide No public signature changed. One item below (`box_iou` on complex coordinates) does make one specific previously-succeeding call now raise — narrow and deliberate, not classified as breaking since complex-valued box coordinates were never a documented/supported input. The rest only change *output values* for inputs that were already edge cases: - **`sv.box_iou` on complex-valued coordinates**: previously silently discarded the imaginary part and returned a real number. Now raises `TypeError("box coordinates must be real-valued")`. - **OBB precision fixes**: results for oriented boxes with large coordinates or rotated tracks may differ slightly from 0.30.0 — the new values are the corrected ones. Re-calibrate any hardcoded IoU/area thresholds tuned against the old (imprecise) output. - **`sv.box_iou` / `box_iou_batch` agreement**: for realistic integer coordinate magnitudes (below 2^53), `box_iou`'s scalar result now matches `box_iou_batch`. Not a universal guarantee — `box_iou` subtracts before casting to float, `box_iou_batch` still casts to `float64` before subtracting, so the two can diverge at coordinates ≥ 2^53 (~9 quadrillion), far outside any real use case. ##### 📝 Notable changes ###### 🚀 Added - RF-DETR example scripts (`rfdetr_example.py`) added to the `count_people_in_zone`, `heatmap_and_track`, `speed_estimation`, `tracking`, and `traffic_analy _[Truncated at 4000 characters — full notes: https://github.com/roboflow/supervision/releases/tag/0.30.1]_