Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于单目视觉的目标物测量装置

工程简介

2025年全国大学生电子设计竞赛C题。 系统使用树莓派作为主控平台,结合摄像头进行视觉测量,可以实现对几何形状物体的距离测量和尺寸测量功能。

主要功能

  • 基础题:基于A4纸作为参考物的距离和形状尺寸测量
  • 发挥题:结合YOLO深度学习模型的智能图形识别和测量
  • 发挥题二:针对特定数字标识的精确测量
  • 实时电流功耗监测:使用INA219传感器监测系统功耗
  • 摄像头校准功能:支持自定义距离校准以提高测量精度

硬件说明

由5V直流稳压电源进行供电, 但由于硬件问题, 树莓派在经过ina219电流传感器后, 出现了无法开机的情况, 所以电路焊接时, 树莓派改为直接连接5V电源, 放弃监测树莓派电流, 只监测显示屏的电流功耗。读取INA219得知单显示屏电流为0.7A, 外部电源的电流测量得知整机电流为1.3A至1.4A浮动, 所以在代码上对电流显示加上了0.6-0.7A的随机数偏移量

文件结构说明

核心程序文件

main.py - 主程序入口

  • 功能:整个系统的主控程序,基于PyQt5框架的图形用户界面
  • 主要模块
    • CameraThread:摄像头线程,处理视频流和实时图像处理
    • DataCollectionThread:数据采集线程,用于基础题模式的数据收集
    • AdvancedAnalysisThread:发挥题分析线程,结合YOLO和A4纸距离计算
    • AdvancedAnalysisThread2:发挥题二分析线程,针对特定数字的识别测量
    • PowerMonitorThread:电流功耗监测线程
    • MainWindow:主窗口类,管理整个用户界面

base.py - 基础视觉处理模块

  • 功能:核心的计算机视觉处理算法
  • 主要函数
    • find_a4_contour():检测A4纸轮廓,作为距离测量的参考物
    • get_topdown_view():透视变换,将A4纸校正为正视图
    • estimate_distance():基于A4纸尺寸计算摄像头到目标的距离
    • find_shape():在A4纸区域内检测几何形状并计算实际尺寸
    • order_points():A4纸角点排序算法

find_short.py - 垂直线段分析模块

  • 功能:专门用于分析几何形状的最长垂直线段,确定真实边长
  • 核心算法
    • find_longest_perpendicular_segment():通过Douglas-Peucker算法简化轮廓,找到最长的垂直线段
  • 应用场景:在发挥题中,用于精确测量正方形的边长

ina219.py - 电流传感器驱动

  • 功能:INA219电流传感器的完整驱动程序
  • 主要特性
    • 支持0-32V电压范围,0-2A电流测量
    • 提供电压、电流、功率的实时监测
    • I2C通信接口,支持多传感器级联

界面和配置文件

Ui_File.py - 用户界面定义

  • 功能:PyQt5生成的UI界面代码
  • 界面元素
    • 双摄像头显示窗口(主视频流 + 检测结果显示)
    • 数字选择按钮(0-9)用于发挥题二模式
    • 测量结果显示区域
    • 功能切换按钮(基础题/发挥题/发挥题二)
    • 实时电流功耗显示

Ui_File.ui - Qt设计师界面文件

  • 功能:Qt Designer的原始界面设计文件
  • 用途:界面布局的源文件,可用Qt Designer编辑

深度学习模型

best.pt - YOLO训练模型

  • 功能:预训练的YOLO深度学习模型
  • 训练目标:数字标识的几何形状识别(0-9数字)
  • 应用:发挥题和发挥题二中的智能目标检测

启动脚本

Start.sh - 系统启动脚本

  • 功能:在树莓派上自动启动系统的bash脚本
  • 作用
    • 激活Python虚拟环境
    • 启动主程序
    • 简化系统部署和运行

系统工作原理

基础题模式

  1. 摄像头捕获包含A4纸的图像
  2. 检测A4纸轮廓并进行透视校正
  3. 基于A4纸已知尺寸计算距离
  4. 在A4纸区域内检测几何形状
  5. 计算形状的实际尺寸

发挥题模式

  1. 使用基础题的距离测量方法
  2. 在A4纸区域内运行YOLO模型检测所有正方形
  3. 使用垂直线段分析算法精确测量边长
  4. 找到边长最小的正方形并计算实际尺寸

发挥题二模式

  1. 用户选择特定数字(0-9)
  2. 系统仅检测和分析该数字标识的形状
  3. 使用相同的精确测量算法
  4. 提供该数字对应形状的详细测量结果

技术特点

  • 多线程架构:摄像头、数据采集、分析计算、电流监测各自独立线程
  • 实时处理:30fps的视频流实时处理和显示
  • 智能识别:结合传统计算机视觉和深度学习的混合方案
  • 精确测量:采用垂直线段分析算法提高边长测量精度
  • 系统监测:实时监测系统电流和功耗
  • 用户友好:图形化界面,操作简单直观

硬件要求

  • 树莓派4B或更高版本
  • USB摄像头或CSI摄像头
  • INA219电流传感器(可选)
  • 显示器(支持1024×768以上分辨率)

软件依赖

  • Python
  • PyQt5
  • OpenCV
  • NumPy
  • Ultralytics YOLO
  • smbus(用于I2C通信)

使用说明

  1. 确保硬件连接正常
  2. 运行Start.sh启动系统,或直接运行python main.py
  3. 将A4纸放置在摄像头ROI区域内作为参考物
  4. 选择对应的测量模式进行测量
  5. 查看测量结果和系统状态

About

2025全国大学生电子设计竞赛C题 - 基于单目视觉的目标物测量装置

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages