Skip to content

Quisperc/RoboVision

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RoboVision

RoboVision 是一个基于.NET Framework 的机器视觉系统,集成了摄像头控制、深度学习和网络通信功能,可用于实时物体检测和识别。

项目概述

RoboVision 系统是一个综合性的机器视觉解决方案,通过整合相机采集、深度学习推理和网络通信功能,实现了对目标物体的实时检测与识别。系统采用模块化设计,具有高度的可扩展性和灵活性。

核心功能

  • 视频采集:支持多种 USB 摄像头设备,可配置多种分辨率和采集参数
  • 实时检测:基于 ONNX Runtime 的深度学习推理,支持多种目标检测模型
  • 结果传输:通过 TCP/IP 协议实现检测结果的实时传输
  • 用户交互:直观的图形界面,支持参数配置和结果可视化

系统架构

RoboVision 采用分层架构设计,各模块职责明确,耦合度低:

核心组件

  1. CameraController:负责摄像头设备管理、参数设置和图像采集
  2. DeepLearningModel:进行图像预处理、模型推理和结果后处理
  3. CommunicationModule:负责网络通信和数据传输
  4. MainForm:主界面和用户交互层

组件交互

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   相机模块   │────>│ 深度学习模块 │────>│  通信模块   │
└─────────────┘     └─────────────┘     └─────────────┘
       ▲                   ▲                  ▲
       │                   │                  │
       └───────────┬───────┴──────────┬──────┘
                   │                  │
             ┌─────┴──────────────────┴─────┐
             │            主界面             │
             └────────────────────────────┘

项目结构

功能实现

相机模块

相机模块使用 OpenCvSharp 库实现,支持以下功能:

  • 自动检测系统可用的摄像头设备
  • 支持多种分辨率和帧率配置
  • 实现图像采集和预览功能
  • 支持图像保存和处理
  • 资源管理和内存优化
// 相机初始化示例
using (var capture = new VideoCapture(cameraIndex))
{
    capture.Set(VideoCaptureProperties.FrameWidth, width);
    capture.Set(VideoCaptureProperties.FrameHeight, height);
    // ...
}

深度学习模块

深度学习模块基于 ONNX Runtime 实现,具备以下功能:

  • 支持多种 ONNX 格式模型加载
  • 图像预处理(尺寸调整、归一化等)
  • 模型推理和结果解析
  • 检测结果可视化(边界框绘制等)
  • 内存优化和 GPU 加速支持
// 模型推理示例
using (var session = new InferenceSession(modelPath))
{
    var inputMeta = session.InputMetadata;
    var container = new List<NamedOnnxValue>();
    // 准备输入数据...
    container.Add(NamedOnnxValue.CreateFromTensor(inputName, tensor));
    // 执行推理
    using (var results = session.Run(container))
    {
        // 处理结果...
    }
}

通信模块

通信模块实现了基于 TCP/IP 的数据传输功能:

  • 服务器/客户端模式支持
  • 异步通信机制
  • 数据序列化和反序列化
  • 超时处理和重连机制
  • 错误恢复能力
// TCP服务器示例
var listener = new TcpListener(IPAddress.Any, port);
listener.Start();
while (true)
{
    var client = await listener.AcceptTcpClientAsync();
    // 处理客户端连接...
}

用户界面

主界面提供直观的操作和监控功能:

  • 相机设备选择和参数配置
  • 模型加载和配置
  • 实时预览和结果显示
  • 通信状态监控
  • 系统日志和错误提示

系统要求

  • Windows 10 或更高版本
  • .NET Framework 4.7.2 或更高版本
  • 支持 DirectShow 的 USB 摄像头设备
  • CUDA 支持(可选,用于 GPU 加速)

快速开始

  1. Releases下载最新版本
  2. 解压到本地目录
  3. 运行 RoboVision.exe 启动应用程序
  4. 点击"检测相机"按钮连接摄像头设备
  5. 设置相机参数(分辨率等)
  6. 点击"加载模型"按钮加载 ONNX 格式的深度学习模型
  7. 点击"拍照"或"处理"按钮进行图像处理与识别
  8. 检测结果将自动保存并可通过网络发送

配置说明

  • 图像保存路径:./CapturedImages/
  • 处理结果保存路径:./ProcessedImages/
  • 日志文件路径:./Logs/
  • 默认 TCP 通信端口:8001

性能优化

RoboVision 进行了多方面的性能优化:

内存管理

  • 使用using语句和显式调用Dispose()方法确保资源及时释放
  • 实现周期性内存清理机制,自动回收未使用资源
  • 优化图像处理流程,减少不必要的对象创建和复制

异常处理

  • 增强异常捕获和日志记录
  • 实现从错误状态的自动恢复机制
  • 添加用户友好的错误提示

性能建议

  • 对于长时间运行的应用,推荐定期重启应用以释放资源
  • 使用较低分辨率可以减轻系统负担,提高处理速度
  • 尽量使用较新的 CUDA 版本获得更好的 GPU 加速效果

开发计划

已完成

  • ✅ 相机模块基本功能实现
  • ✅ 深度学习模型集成与推理
  • ✅ TCP 通信基础功能
  • ✅ 内存管理与异常处理优化
  • ✅ 图像处理流程优化
  • ✅ 内存泄漏修复

进行中

  • 🔄 检测精度进一步优化
  • 🔄 通信协议标准化
  • 🔄 用户界面体验改进
  • 🔄 性能监控与优化

待实现

  • 📝 相机模块:其他参数(如帧率、曝光度)设置
  • 📝 深度学习模块:增强图像预处理和后处理能力
  • 📝 通信模块:增加更多通信协议支持
  • 📝 主界面:防误操作机制、用户配置保存恢复
  • 📝 系统监控:添加内存和性能监控功能

未来规划

  • 多模型切换:支持在运行时切换不同的检测模型
  • 目标跟踪:添加对运动目标的实时跟踪功能
  • 批量处理:支持对图像批量进行检测和分析
  • 云端协同:添加与云服务的交互功能
  • 多相机支持:实现多摄像头并行处理
  • 边缘计算:优化系统在资源受限环境下的性能

贡献指南

我们欢迎对 RoboVision 项目的贡献。如果您想参与开发,请:

  1. Fork 项目仓库
  2. 创建您的功能分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

About

基于计算机视觉的机器人拆垛码垛系统

Resources

Stars

Watchers

Forks

Packages

No packages published