A modular, lightweight, C++ computer-vision pipeline designed for Jetson, Raspberry Pi, and general Linux systems.
Built for real-time processing, config-driven pipelines, and extensibility.
Work-in-progress: This repository is part of the CCMCode Embedded Vision toolkit and serves as a portfolio-quality example of modern C++ pipeline architecture.
This repository is under active development.
It already includes a minimal working pipeline, and the architecture is evolving toward a fully configurable multi-stage system.
- OpenCV capture from USB/MIPI (index/size from config)
- Grayscale + simple processing stages
- Real-time FPS counter
- Clean separation between app, core, I/O, and stages
IPipelineStageinterface- Simple
Pipeline/config loading core - First concrete stage:
GrayscaleStage - IO abstraction layer (
ICameraSource) with an OpenCV-based implementation
- Configure:
- camera index
- resolution
- FPS target
- enabled stages
- YAML β pipeline construction (basic version)
- CMake 3.16+
- C++17
- Targets:
edgecv_coreedgecv_app
- OpenCV detection + linking
- Async / threaded stages
- Back-pressure system
- Frame pool allocator
- Stage-level metrics + profiling hooks
- ONNX models
- TensorRT integration (Jetson)
- SIMD acceleration for common operators
- Jetson-optimized Docker image
- Raspberry Pi tuned build flags
- GStreamer capture nodes
- RTSP streaming output
- Video recorder stage
ccm-edge-cv-pipeline/
βββ CMakeLists.txt
βββ config/
β βββ pipeline_basic.yaml
βββ docs/
β βββ architecture.md
βββ include/
β βββ core/
β β βββ config_loader.hpp
β β βββ ipipeline_stage.hpp
β β βββ perf_timer.hpp
β βββ io/
β β βββ icamera_source.hpp
β β βββ opencv_camera.hpp
β βββ stages/
β βββ grayscale_stage.hpp
βββ src/
β βββ app/
β β βββ main.cpp
β βββ core/
β β βββ config_loader.cpp
β βββ io/
β β βββ camera_capture.hpp
β β βββ opencv_camera.cpp
β βββ stages/
β βββ grayscale_stage.cpp
βββ tests/
βββ test_frame_queue.cpp
βΉοΈ Some directories represent the target architecture and are partially implemented.
config/pipeline_basic.yaml:
camera:
index: 0
width: 640
height: 480
fps: 30
pipeline:
stages:
- type: grayscalemkdir build && cd build
cmake -DEDGECV_ENABLE_TENSORRT=OFF -DEDGECV_ENABLE_PROFILING=ON ..cmake --build ../edgecv_app ../config/pipeline_basic.yamlSee full details in docs/architecture.md.
[ Camera Capture (ICameraSource / OpenCV camera) ]
β
[ Frame Queue / Capture Loop ]
β
[ Pipeline (Stage Chain) ]
β
[ Output (Window / File / Stream) ]
- Push/pop behaviour
- Blocking wait
- Thread-safety basics
Run tests:
ctestBadges:
MCU camera streaming node for edge devices.
Jetson/Pi YOLO & GStreamer CV starter repo.
This repository forms part of CCMCodeβs Edge Vision Suite, a collection of modern, minimal, and production-oriented embedded CV systems.
MIT License.
This is the open-source foundation of the CCMCode Vision Stack. It focuses on modular, non-CUDA functionality for broad compatibility.
Looking for the Pro SDK? I am developing a high-performance Middleware SDK for advanced non-CUDA optimization and enterprise deployment.
- Sponsor to support open features: GitHub Sponsors
- Inquire about the Private SDK: info@ccmcode.dev