# Veritas **Repository Path**: Asong65/veritas ## Basic Information - **Project Name**: Veritas - **Description**: 使用OpenCV库的C#视觉识别项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-24 - **Last Updated**: 2026-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Veritas C#(WPF 客户端)+ Python(YOLO 模型)视觉识别项目:识别台面上堆叠的生物实验耗材 (吸头盒、试剂槽、孔板、适配器、垃圾桶、设备等,多目标多类别)。 ## 架构 ``` 摄像头 -> WPF 客户端 (Veritas.App) | 每帧 JPEG v HTTP POST /detect Python 推理服务 (veritas-vision, FastAPI) | YOLO 模型 v 检测框 JSON WPF 画框显示 ``` - **C# 侧**(`src/`):摄像头采集、画面渲染、截图。识别通过 `IRecognitionRule` 接口抽象, `YoloHttpRule` 把帧发给 Python 服务并解析结果,不依赖任何 Python 运行时。 - **Python 侧**(`python/`):数据集管理、YOLO 训练、HTTP 推理服务。模型能力全部在这边演进。 ## 目录 ``` Veritas/ ├── src/ │ ├── Veritas.Core/ # net8.0:识别接口 + 规则(含 YoloHttpRule) │ └── Veritas.App/ # net8.0-windows WPF:MVVM 客户端 ├── tests/ │ └── Veritas.App.Tests/ # xunit(Core 规则 + HTTP mock) └── python/ # Python 工程(uv 管理) ├── veritas_vision/ # detector / server / train / split_dataset ├── datasets/tipbox/ # 吸头盒数据集(images/labels + train/val) ├── tests/ # pytest └── models/tipbox/best.pt # 训练产物(服务加载的权重) ``` ## 快速开始 ### 1. 启动推理服务(Python) ```bash cd python uv sync --extra dev uv run uvicorn veritas_vision.server:app --host 127.0.0.1 --port 8300 # 验证: curl http://127.0.0.1:8300/health ``` 模型未训练时 `/health` 返回 `model_exists: false`,`/detect` 返回 503, WPF 客户端照常显示画面(只是没有检测框)。 ### 2. 启动 WPF 客户端(C#) ```bash dotnet run --project src/Veritas.App ``` ### 3. 训练自己的吸头盒模型 见 [docs/dataset-guide.md](docs/dataset-guide.md)。简述: ```bash # 采集图片+标注放入 python/datasets/tipbox/raw/,然后: cd python uv run python -m veritas_vision.split_dataset # 划分 train/val uv run python -m veritas_vision.train --epochs 100 # CPU 训练(约数十分钟) cp runs/detect/tipbox*/weights/best.pt models/tipbox/best.pt # 重启推理服务即生效 ``` ## 测试 ```bash dotnet test # C# 侧(含 HTTP mock 测试) cd python && uv run pytest # Python 侧(服务/数据集/数据结构) ``` ## 文档 - **[代码导读(零基础版)](docs/code-guide.md)** ← 想看懂代码从这里开始 - [架构说明](docs/architecture.md) — 组件职责、接口契约、多类别设计 - [数据集与训练指南](docs/dataset-guide.md) — 采集、标注、训练、部署