YOLO segmentation utilities for video streams
Project description
mini_vision
Simple Python library for object segmentation in video streams using YOLO models.
The goal of this library is to provide a modular pipeline to:
- consume video streams
- perform object segmentation
- render contours or masks
The library follows data-oriented design and low coupling principles, allowing easy replacement of computer vision models.
Installation
pip install mini-vision
Usage
Example showing how to use vision-seg to consume a video stream, run YOLO segmentation, and render object contours.
Import the library
from vision_seg import (
YoloSegmenter,
SegmentationRenderer,
WSFrameClient
)
Components:
| Component | Description |
|---|---|
YoloSegmenter |
Runs object segmentation using a YOLO segmentation model |
SegmentationRenderer |
Draws segmentation contours on the frame |
WSFrameClient |
Connects to a WebSocket video stream and yields frames |
YoloSegmenter
Runs object segmentation using a YOLO segmentation model.
segmenter = YoloSegmenter("yolov8n-seg.pt")
detections = segmenter.segment(frame)
SegmentationRenderer
Responsible for rendering segmentation contours on frames.
renderer = SegmentationRenderer()
frame = renderer.draw(
frame,
detections,
mode="contour",
detect_object=["car","person","dog"],
detect_color=["gold","neon_pink","lime"],
thickness=2
)
JSON Output (optional)
SegmentationRenderer can optionally return structured detection data in JSON format. This allows integration with logging systems, APIs, analytics pipelines, or other downstream processing tools. To enable this feature, pass return_json=True
frame, data = renderer.draw(
frame,
detections,
mode="contour",
detect_object=["car","person","dog"],
detect_color=["gold","neon_pink","lime"],
thickness=2,
return_json=True
)
Example JSON output:
{
"detections": [
{
"label": "person",
"confidence": 0.92,
"bbox": [120, 80, 240, 300]
},
{
"label": "car",
"confidence": 0.88,
"bbox": [400, 210, 560, 350]
}
]
}
If return_json is not enabled, the renderer behaves normally and only returns the processed frame.
TOON Output
the renderer can also return detections in TOON format, a lightweight text representation designed for agent pipelines, logging, and token-efficient LLM processing. Enable it using return_toon=True
frame, toon = renderer.draw(
frame,
detections,
return_toon=True
)
Example TOON output:
frame_width=1280 frame_height=720
label=person x=412 y=210 w=120 h=260 cx=472 cy=340 area=31200 score=0.91
label=car x=102 y=320 w=180 h=90 cx=192 cy=365 area=16200 score=0.88
WSFrameClient
Connects to a WebSocket video stream and yields frames.
client = WSFrameClient("ws://127.0.0.1:8000/ws/frames")
async for frame in client.frames():
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mini_vision-0.3.0.tar.gz.
File metadata
- Download URL: mini_vision-0.3.0.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c060ee3f66cd1cba9d5e29a2cab7cbae0daab3413e4e2f02c50662cca672c854
|
|
| MD5 |
a74bff1a2abded935c56840167d8af81
|
|
| BLAKE2b-256 |
8a75a653d9d94d7f64a63e73b373b77f07ceebaf5971b411242926ed2bf16c56
|
File details
Details for the file mini_vision-0.3.0-py3-none-any.whl.
File metadata
- Download URL: mini_vision-0.3.0-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1d8b5e60dc9f65964d2488f26b351384580334782cba9cad0975740225b8544
|
|
| MD5 |
eda1ddc03065d99ccac773c577593d1f
|
|
| BLAKE2b-256 |
b6243cc04062bd80128d20d200a1b3578a08de5cd0fe272fe99eef9c65b41c8f
|