Skip to content

CahillMeyer/ccm-edge-cv-pipeline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ccm-edge-cv-pipeline

Platform Language License: MIT CI

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.

πŸš€ Status Overview

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.

βœ” Implemented Features (Current)

πŸŽ₯ Basic Camera Pipeline

  • 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

🧩 Minimal Modular Architecture

  • IPipelineStage interface
  • Simple Pipeline/config loading core
  • First concrete stage: GrayscaleStage
  • IO abstraction layer (ICameraSource) with an OpenCV-based implementation

βš™οΈ Initial YAML Configuration Support

  • Configure:
    • camera index
    • resolution
    • FPS target
    • enabled stages
  • YAML β†’ pipeline construction (basic version)

πŸ›  Modern CMake Build

  • CMake 3.16+
  • C++17
  • Targets:
    • edgecv_core
    • edgecv_app
  • OpenCV detection + linking

πŸ“ Planned Features (Roadmap)

πŸ” Pipeline & Architecture

  • Async / threaded stages
  • Back-pressure system
  • Frame pool allocator
  • Stage-level metrics + profiling hooks

🧠 AI & Acceleration

  • ONNX models
  • TensorRT integration (Jetson)
  • SIMD acceleration for common operators

πŸ— Deployment

  • Jetson-optimized Docker image
  • Raspberry Pi tuned build flags

πŸ“¦ I/O Backends

  • GStreamer capture nodes
  • RTSP streaming output
  • Video recorder stage

πŸ“‚ Repository Layout (Current + Planned)

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.

πŸ§ͺ Example YAML Configuration

config/pipeline_basic.yaml:

camera:
  index: 0
  width: 640
  height: 480
  fps: 30

pipeline:
  stages:
    - type: grayscale

β–Ά Building and Running

1. Configure

mkdir build && cd build
cmake -DEDGECV_ENABLE_TENSORRT=OFF -DEDGECV_ENABLE_PROFILING=ON ..

2. Build

cmake --build .

3. Run

./edgecv_app ../config/pipeline_basic.yaml

πŸ— Architecture Overview

See full details in docs/architecture.md.

[ Camera Capture (ICameraSource / OpenCV camera) ]
        ↓
[ Frame Queue / Capture Loop ]
        ↓
[ Pipeline (Stage Chain) ]
        ↓
[ Output (Window / File / Stream) ]

πŸ§ͺ Tests

test_frame_queue.cpp

  • Push/pop behaviour
  • Blocking wait
  • Thread-safety basics

Run tests:

ctest

πŸ”§ CI / CD

Badges:

Build C++17 License: MIT

πŸ”— Related Projects

CCM ESP32 Vision Node

MCU camera streaming node for edge devices.

CCM EdgeVision Starter Kit

Jetson/Pi YOLO & GStreamer CV starter repo.

πŸ‘¨β€πŸ’» About CCMCode

This repository forms part of CCMCode’s Edge Vision Suite, a collection of modern, minimal, and production-oriented embedded CV systems.

πŸ“œ License

MIT License.


πŸš€ Professional Edge Pipelines

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.

About

Modular C++ OpenCV/GStreamer pipeline for Jetson, Raspberry Pi, and Linux edge devices.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors