返回项目空间

计算机视觉 / 桌面应用 · v0.2.0 MVP

SyringeMeter

从摄像头画面,到稳定读数与可追溯的记录。

阅读完整案例

演示录制于 macOS,以 Python 源码运行,展示该次运行中的可见行为。Windows 安装包的验证范围见文末。

一个在本地 CPU 上运行的针筒视觉测量应用。定位、方向、量程和活塞位置共同生成连续容量读数,再接上实时曲线和由用户控制的 CSV 记录。这份案例记录了一个视觉原型如何走到桌面交互、失败处理与 Windows 分发。

一次检测,怎样变成连续测量?

起点是一支出现在摄像头里的针筒。它可能倾斜,活塞会移动,颜色标记也可能暂时看不清。检测框只能告诉系统目标在哪里;要回答“现在还有多少容量”,还需要确认方向、量程与活塞位置,并让这些证据落在同一帧、同一套坐标里。

当读数走进桌面应用,问题也随之扩大:界面要保持响应,曲线要跟上测量,开始和停止必须有明确含义,异常退出时也不能把记录状态留给用户猜测。SyringeMeter 因而围绕从画面到记录的整条工作流展开。

从画面到记录

  1. 采集画面摄像头提供当前帧,在本地处理。
  2. 定位针筒YOLO OBB 找到目标位置与旋转角度。
  3. 统一坐标转换局部画面,建立一致的测量方向。
  4. 读取证据结合绿色方向标记、双红线量程与活塞位置。
  5. 稳定容量质量检查与时间稳定共同决定有效读数。
  6. 显示与记录实时读数和曲线;显式开始后写入标量 CSV。

先统一方向,再计算容量

系统先用 YOLO OBB 定位带有旋转角度的针筒区域,再把这块画面转换成方向统一的局部测量区域。针筒在摄像头里转动时,后续判断仍然可以使用一致的坐标。

在这个区域里,绿色标记提供方向,双红色量程线给出测量范围,活塞位置提供当前容量的依据。只有这些条件共同成立,才会产生连续容量结果,再经过时间稳定处理,进入界面的读数和曲线。

  • 目标定位:确定针筒在画面中的位置和角度。
  • 局部测量:将方向、量程和活塞放进统一坐标。
  • 结果展示:把有效容量转换成可持续观察的读数与曲线。
macOS 上运行的 SyringeMeter:右侧针筒检测与容量读数,左侧实时曲线
完整演示 02:00:检测画面、容量读数与正在记录的曲线。截图来自实际运行。

稳定读数,也要诚实地失效

平滑可以减轻跳动,也可能掩盖丢失的证据。如果当前帧的颜色标记、量程锚点或上游判断无效,应用会明确显示没有有效读数,不继续沿用上一帧容量。这样,屏幕上的稳定仍然对应眼前的画面。

运行时把不同的数据分开处理。子进程独占摄像头、模型、视觉测量和 CSV 写入;父进程负责 Qt 界面与用户操作。视频通道只保留最新画面,测量样本则使用有界无损通道,让显示的流畅性与记录的完整性各自有明确的处理方式。

每一段记录,都由用户明确开始

打开摄像头不等于开始保存数据。只有点击 Start,应用才会创建记录会话并写入标量 CSV。产品不保存摄像头图片或视频,留下的是测量数据,以及能与这次操作对应的时间记录。

Start、Stop、Reset 和退出命令都在处理帧的边界生效。Reset 会结束当前会话、清空曲线并回到 READY;下一次显式 Start 才创建新的 CSV,从 0 ms 重新计时。一次重置因此有清楚的前后边界。

  • 观看:实时查看容量与曲线,不自动开始 CSV 记录。
  • 记录:点击 Start,开启一次独立的测量会话。
  • 重置:关闭当前会话,清空曲线,等待下一次 Start。
演示中打开的 CSV 表格,包含时间、会话标识、测量值和无有效检测的记录
完整演示 03:00:查看生成的 CSV。记录保留会话与测量状态,便于回看一次操作。

把原型交付成可以安装的应用

项目把摄像头、连续测量、Qt 交互、曲线和 CSV 串成了端到端链路,并为单元逻辑、集成行为、界面、进程和记录建立测试。接口约定与文档也进入验证范围,便于区分代码行为、测试结果和真实设备证据。

v0.2.0 提供 Windows x64 CPU-only 安装程序和便携 ZIP,由 GitHub Actions 配合 PyInstaller 与 Inno Setup 构建。发布任务对两份分发产物执行校验;模型不进入 Git 历史,只经获批的 Release 链路,在 SHA-256 校验后装入产物。

这些工作建立了可重复的构建与分发路径。安装包在目标机器上的安装、摄像头与真实推理,需要单独完成硬件验证,不能由自动化构建结果替代。

我的角色:定义系统应该如何成立

这是我主导的个人工程项目。我负责定义问题、产品目标、测量语义、失败边界和验收标准,并推动算法、运行时、桌面交互与 Windows 分发形成完整工作流。最终发布决策也由我作出。

AI 工具参与实现、重构、测试和文档整理。我持续判断哪些行为值得实现、哪些证据足以接受,以及哪些结果还必须回到真实硬件上确认。这个项目也是一次 AI-native 协作实践:让迭代最终收敛成行为明确、结果可验证、责任清楚的系统。

当前证据与适用边界

SyringeMeter 是受控场景中的工程 MVP,当前展示围绕带标记的单支针筒展开。它不是医疗设备,不宣称适用于任意针筒、光照或部署环境。

本页视频来自 macOS Python 源码运行,只证明该次演示中可见的行为。v0.2.0 的 Windows 构建和 Release 已完成自动化验证;当前 Windows 包的安装、摄像头和真实推理尚未重新完成目标机实测。源码、自动化检查、演示与安装包验证分别记录,最新进展以项目验证状态为准。