# 程序控制文档
---
## 一、基本说明
- **版本号**:`v3.5.1`
- **适用算法**:OCR、色块、AprilTag
---
## 二、支持算法列表
| 算法ID | 名称 | 简介说明 |
| ---- | -------- | ----------------------------- |
| `0` | 空 | 开机默认状态,无算法运行 |
| `1` | 色块检测 | 默认 LAB 参数为 0,需配合 `S` 指令设置颜色范围 |
| `2` | Apriltag | 检测 Apriltag 标签,返回 ID 与旋转角度 |
| `3` | OCR | 光学字符识别 |
| `4` | 交叉点 | 测试中功能,尚未稳定 |
---
## 三、控制指令
| 操作 | 指令字符 | 参数格式与说明 | 示例命令 |
| ------------ | ---- | ------------------------------------------------------------------------------------- | ------------------------------ |
| **开启指定算法** | `N` | `<算法ID>`
立即切换当前运行算法 | `N1`(启动色块检测) |
| **设置LAB参数** | `S` | `<参数ID>+LMin+LMax+AMin+AMax+BMin+BMax>`
用于色块检测的颜色范围(LAB色彩空间,0~255) | `S1+0+100+30+80+20+70` |
| **设置串口应答模式** | `A` | `<模式>`
• `-n`:定时上报,间隔 n 毫秒
• `0`:关闭上报
• `n>0`:仅上报第n个目标后自动切回 `A0` | `A-500`
`A0`
`A2` |
| **缩放画面比例** | `Z` | `<缩放倍数>`
以画面中心为基准缩放。`Z100`=原始尺寸,`Z150`=放大至150% | `Z100`
`Z150` |
| **设置分辨率** | `R` | `<分辨率>`
格式:`宽x高`,如 `552x368` | `R552x368` |
| **设置检测框显示项** | `D` | `+标识符+状态`
标识符: `i`, `x`, `y`, `w`, `h`, `v`, `r`, `cx`, `cy`
状态: `1`=显示, `0`=隐藏 | `D+i1+cx1+cy1`
`D+i1+x0+y0` |
---
## 四、算法结果返回格式规范
### 基础通用格式(适用于色块、OCR等)
```
#i{x}y{y}w{w}h{h}v{v}!
```
### 特殊格式 - Apriltag(含旋转角度)
```
#i{i}x{x}y{y}w{w}h{h}v{v}r{r}!
```
### 字段含义说明
| 字段 | 含义 | 说明 |
| --- | -------- | ----------------------------------------------------------- |
| `i` | 目标序号 | 第几个被检测到的目标(从 `1` 开始递增) |
| `x` | 中心点 X 坐标 | 目标在图像中的横向像素坐标 |
| `y` | 中心点 Y 坐标 | 目标在图像中的纵向像素坐标 |
| `w` | 宽度 | 目标包围框宽度(像素) |
| `h` | 高度 | 目标包围框高度(像素) |
| `v` | 结果值 | 根据算法不同:
• Apriltag → 标签 ID
• 色块 → LAB 参数组 ID(如 S1/S2) |
| `r` | 旋转角度 | 仅Apriltag |
### 示例输出(色块检测)
若检测到三个色块:
```
#i1x100y120w50h50v1!
#i2x200y160w60h60v1!
#i3x300y200w55h55v1!
```
### 📌 对于多个结果,优先以 y 升序排序,其次以 x 升序排序
---