# VisionEngine
**Repository Path**: penghaotian1/VisionEngine
## Basic Information
- **Project Name**: VisionEngine
- **Description**: 本项目旨在实现一个高性能、低延迟的多路视频实时拼接系统。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://github.com/roy407/stitch
- **GVP Project**: No
## Statistics
- **Stars**: 20
- **Forks**: 2
- **Created**: 2025-05-18
- **Last Updated**: 2026-03-21
## Categories & Tags
**Categories**: ai, multimedia
**Tags**: cuda, Cpp, 多线程, 生产-消费者模式
## README
# 🚀 基于异构平台的视频拼接项目
中文 |
English
本项目旨在实现一个高性能、低延迟的**多路视频实时拼接系统**。
系统利用**CUDA GPU加速**与**多线程优化**技术,能够同时从多路相机采集视频流,进行解码、拼接、显示、编码、rtsp推流与性能监测。
目前已经在**普通家用电脑**与**jetson orinX**平台完成适配。
在未来,还会加入 **华为昇腾** 等异构平台。
---
## 📢 News|项目进展
2026-02-01:(预计完成代码v2.0的编写)。
2025-12-02:在**2025年中国国际海事会展**完成展览。
2025-10-06:完成代码v1.0的编写。
2025-05-10:项目立项,目标是解决海面小目标识别问题,因此需要多相机和高分辨率。
---
## 🧩 项目特点
- 🔹 **多摄像头实时拼接**:支持多路 RTSP、USB 或本地视频输入。
- 🔹 **GPU 加速**:基于 CUDA 实现高效视频处理与图像拼接。
- 🔹 **硬件编解码**:使用cuvid和nvenc对编解码进行加速(在orinX上使用nvmpi)。
- 🔹 **多线程架构**:采用生产者-消费者模型,保证数据流畅。
- 🔹 **性能监测模块(Timing Watcher)**:
自动记录每个处理阶段的耗时(如接收、解码、拼接、显示),并输出为 CSV 文件,方便后续性能分析与可视化。
- 🔹 **Qt 界面展示**:提供实时拼接结果显示与调试界面。
- 🔹 **模块化设计**:核心逻辑与界面层完全解耦,易于扩展与维护。
---
## 🧱 前置条件
| 环境 | 最低要求 |
|------|-----------|
| NVIDIA 驱动 | ≥ 535 |
| CUDA | ≥ 11.8 |
| FFmpeg | 需要手动编译,要支持硬件编解码 |
| openGL | 任意版本 |
| Qt | ≥ 5.0 |
| spdlog | 任意版本 |
---
## ⚙️ 编译及运行步骤
```bash
# 配置环境
bash set_env.sh
# 编译并运行程序
bash start_camera.sh -c (相机配置)
```
更多详细操作,请看[如何入门该项目](docs/入门该项目.md)
---
## 📁 目录结构
```
stitch/
├─start_camera.sh # 程序启动入口
├─main.cpp
├─camera_manager # 摄像头与线程管理
├─components # 部件模块
│ ├─qt # qt显示界面
│ └─shm # 共享内存模块(暂未开放)
├─core # 项目核心配置
│ ├─config # 读取json文件
│ ├─operator # 算子库
│ └─utils # 可用工具
├─docs # 项目文档
├─resource # 内含各种相机配置文件
└─scripts # 脚本仓库
├─H_matrix # 用于计算多张图片之间的h矩阵
├─mapping_table # 用于生成多张图片生成的map表
└─plot_timing.py # 用于显示图像拼接过程中,各阶段耗时
```
---
## 📚 模块说明导航
- 📷 [camera_manager|摄像头与线程管理](camera_manager/README.md)
- 🧠 [core|算子库与核心功能](core/README.md)
- 🧩 [components|功能组件(Qt / shm)](components/README.md)
- 🗂️ [resource|相机与拼接配置文件](resource/README.md)
---
## 📊 各阶段耗时曲线
1️⃣ 视频解码耗时

2️⃣ 拼接阶段耗时

3️⃣ 显示阶段耗时

4️⃣ 全流程耗时

---
## 🖼️ 最终效果图
图中是使用cam5.json文件,配置生成的五路拼接图像的效果,目前平均延时可以做到≤300ms
