Skip to content

Kiến trúc SDK

Tổng quan tầng

Ứng dụng của bạn (C++ / C / Java / C#)

    ├── C++: #include <cvedix/nodes/...>  ──────────────┐
    │                                                    ▼
    ├── C/Java/C#: cvedix_c_api.h ──► libcvedix_capi.so ─┤
    │                                                    ▼
┌────────────────────────────────────────────────────────┐
│  libcvedix_core.so — Core Runtime (80+ nodes)          │
│    ├── libtrt_yolov11.so    (plugin TensorRT)          │
│    ├── libonnx_yolov11.so   (plugin ONNX Runtime)      │
│    └── libov_yolov11.so     (plugin OpenVINO)          │
└────────────────────────────────────────────────────────┘


OpenCV · GStreamer · FFmpeg · CUDA/TensorRT (tùy chọn)

Node — đơn vị xử lý

Mỗi node:

  • Chạy trên thread riêng, nhận/gửi dữ liệu qua queue nội bộ.
  • Xử lý frame_meta (frame + danh sách target) và control_meta (event điều khiển).
  • Có thể attach_to() / detach() lúc runtime.

3 loại node:

LoạiBase classVai trò
Sourcecvedix_src_nodeSinh frame (file, RTSP, app...)
Middlecvedix_nodeXử lý (infer, track, BA, OSD...)
Destinationcvedix_des_nodeXuất kết quả (screen, file, RTMP...)

Luồng dữ liệu

cvedix_frame_meta
├── frame (cv::Mat)
├── channel_index, frame_index
└── targets[]  (cvedix_frame_target)
    ├── box (x, y, w, h)
    ├── label, score
    ├── track_id
    ├── secondary_labels[]   ← VLM/classifier gắn thêm
    └── embeddings[]         ← feature vector

Node phía sau đọc và bổ sung metadata do node phía trước tạo ra — ví dụ tracker gắn track_id lên target mà detector đã tạo.

Backend plugin

cvedix_yolo_detector_node load backend qua plugin .so lúc runtime:

BackendTypePluginModel format
TENSORRTlibtrt_yolov11.so.engine
ONNXlibonnx_yolov11.so.onnx
OPENVINOlibov_yolov11.so.xml/.bin
AUTOtự chọn theo phần cứng

C API — ABI ổn định

libcvedix_capi.so bọc các node C++ thành hàm C thuần. Quy tắc: chỉ thêm hàm mới, không sửa/xóa — nhờ đó bindings Java/C# không vỡ khi core được refactor.

Chi tiết: C API.

Phần mềm độc quyền — CVEDIX