ms-vite-plugin 1.4.17 → 1.4.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/AGENTS.md +1 -1
- package/docs/api/appleocr.md +46 -164
- package/docs/api/image.md +16 -84
- package/docs/api/media.md +6 -7
- package/docs/api/paddleocr.md +77 -123
- package/docs/api/yolo.md +52 -96
- package/docs/apicn/appleocr.md +47 -169
- package/docs/apicn/image.md +15 -81
- package/docs/apicn/media.md +6 -7
- package/docs/apicn/paddleocr.md +77 -130
- package/docs/apicn/yolo.md +52 -101
- package/docs/apipython/appleocr.md +45 -155
- package/docs/apipython/image.md +17 -77
- package/docs/apipython/media.md +7 -8
- package/docs/apipython/paddleocr.md +78 -104
- package/docs/apipython/yolo.md +36 -85
- package/docs/mcp-agent-description.md +1 -1
- package/package.json +1 -1
package/docs/api/paddleocr.md
CHANGED
|
@@ -5,6 +5,8 @@ PaddleOCR 模块基于百度飞桨 PaddleOCR 技术,提供强大的光学字
|
|
|
5
5
|
## 功能概览
|
|
6
6
|
|
|
7
7
|
- **自动加载**: 识别和查找方法会自动加载所需模型,无需先手动加载
|
|
8
|
+
- **模型选择**: 同一时间只保留一个 active 模型,默认 `ppocr-v6-tiny`,可通过模型 ID 手动加载 `ppocr-v6-small` 或 `ppocr-v5`
|
|
9
|
+
- **长边设置**: 可单独调整检测阶段最大边长,不需要重新加载已加载模型
|
|
8
10
|
- **多源识别**: 支持屏幕截图、图片文件、URL 等多种输入源
|
|
9
11
|
- **区域识别**: 支持指定区域的精确文字识别
|
|
10
12
|
- **结构化结果**: 提供详细的文本位置、置信度和方向信息
|
|
@@ -61,98 +63,77 @@ interface OCRResult {
|
|
|
61
63
|
|
|
62
64
|
### 模型管理
|
|
63
65
|
|
|
64
|
-
####
|
|
66
|
+
#### loadModel - 按模型 ID 手动加载内置 PaddleOCR 模型。
|
|
65
67
|
|
|
66
|
-
|
|
68
|
+
识别和查找方法默认自动加载 `ppocr-v6-tiny`。只有需要切换模型或指定 GPU 参数时才调用 `loadModel`。PaddleOCR 同一时间只保留一个 active 模型,`loadModel` 加载成功后会替换已加载模型;检测长边请使用 `setMaxSideLen` 单独设置。
|
|
67
69
|
|
|
68
70
|
```typescript
|
|
69
|
-
function
|
|
71
|
+
function loadModel(modelId: "ppocr-v6-tiny" | "ppocr-v6-small" | "ppocr-v5", useGpu?: boolean): boolean;
|
|
70
72
|
```
|
|
71
73
|
|
|
72
74
|
**参数:**
|
|
73
75
|
|
|
74
|
-
| 参数名
|
|
75
|
-
|
|
|
76
|
-
| `
|
|
77
|
-
| `useGpu`
|
|
76
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
77
|
+
| --------- | ------------------------------------------------ | -------- | ------ | ------------- |
|
|
78
|
+
| `modelId` | `"ppocr-v6-tiny" \| "ppocr-v6-small" \| "ppocr-v5"` | 是 | | 内置模型 ID |
|
|
79
|
+
| `useGpu` | boolean | 否 | false | 是否启用 GPU 加速 |
|
|
78
80
|
|
|
79
81
|
**返回值:**
|
|
80
82
|
|
|
81
|
-
| 类型 | 描述
|
|
82
|
-
| ------- |
|
|
83
|
-
| boolean |
|
|
83
|
+
| 类型 | 描述 |
|
|
84
|
+
| ------- | ----------------------------------------------------------- |
|
|
85
|
+
| boolean | 加载成功或目标模型已加载返回 `true`,模型 ID 不支持或加载失败返回 `false` |
|
|
84
86
|
|
|
85
|
-
|
|
87
|
+
**示例:**
|
|
88
|
+
|
|
89
|
+
```javascript
|
|
90
|
+
// 手动加载 PP-OCRv6 tiny 模型
|
|
91
|
+
paddleOcr.loadModel("ppocr-v6-tiny", false);
|
|
92
|
+
|
|
93
|
+
// 手动加载 PP-OCRv6 small 模型
|
|
94
|
+
const loaded = paddleOcr.loadModel("ppocr-v6-small", false);
|
|
95
|
+
logi(`PP-OCRv6 small 加载结果: ${loaded}`);
|
|
96
|
+
|
|
97
|
+
// 手动切换到 PP-OCRv5 模型
|
|
98
|
+
paddleOcr.loadModel("ppocr-v5", false);
|
|
99
|
+
```
|
|
86
100
|
|
|
87
|
-
####
|
|
101
|
+
#### setMaxSideLen - 单独设置检测阶段输入最大边长。
|
|
102
|
+
|
|
103
|
+
该方法只调整后续检测输入缩放,不会重新加载已加载的 PP-OCRv5/v6 模型。如果当前尚未加载模型,后续识别或查找触发默认 PP-OCRv6 tiny 自动加载时会沿用该设置。
|
|
88
104
|
|
|
89
105
|
```typescript
|
|
90
|
-
function
|
|
91
|
-
input: string,
|
|
92
|
-
x?: number,
|
|
93
|
-
y?: number,
|
|
94
|
-
ex?: number,
|
|
95
|
-
ey?: number,
|
|
96
|
-
confidenceThreshold?: number,
|
|
97
|
-
): OCRResult[];
|
|
106
|
+
function setMaxSideLen(maxSideLen?: number): boolean;
|
|
98
107
|
```
|
|
99
108
|
|
|
100
109
|
**参数:**
|
|
101
110
|
|
|
102
|
-
| 参数名
|
|
103
|
-
|
|
|
104
|
-
| `
|
|
105
|
-
| `x` | number | 否 | 0 | 识别区域左上角 x 坐标 |
|
|
106
|
-
| `y` | number | 否 | 0 | 识别区域左上角 y 坐标 |
|
|
107
|
-
| `ex` | number | 否 | 0 | 识别区域右下角 x 坐标 |
|
|
108
|
-
| `ey` | number | 否 | 0 | 识别区域右下角 y 坐标 |
|
|
109
|
-
| `confidenceThreshold` | number | 否 | 0.6 | 置信度阈值,默认值为 0.6 |
|
|
111
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
112
|
+
| ------------ | ------ | -------- | ------ | ----------------------------------------- |
|
|
113
|
+
| `maxSideLen` | number | 否 | 640 | 输入图像的最大边长;传 0 或负数时使用 640 |
|
|
110
114
|
|
|
111
115
|
**返回值:**
|
|
112
116
|
|
|
113
|
-
| 类型
|
|
114
|
-
|
|
|
115
|
-
|
|
|
117
|
+
| 类型 | 描述 |
|
|
118
|
+
| ------- | -------------------- |
|
|
119
|
+
| boolean | 设置成功返回 `true` |
|
|
116
120
|
|
|
117
121
|
**示例:**
|
|
118
122
|
|
|
119
123
|
```javascript
|
|
120
|
-
//
|
|
121
|
-
|
|
122
|
-
logi(`识别到 ${fullScreenResults.length} 个文本区域`);
|
|
123
|
-
fullScreenResults.forEach((result, index) => {
|
|
124
|
-
logi(`文本 ${index + 1}: ${JSON.stringify(result)}`);
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
// 识别屏幕指定区域(返回相对裁剪区域的坐标)
|
|
128
|
-
const regionResults = paddleOcr.recognize("screen", 100, 100, 500, 300);
|
|
129
|
-
logi(`指定区域识别结果: ${JSON.stringify(regionResults)}`);
|
|
130
|
-
|
|
131
|
-
// 识别图片文件
|
|
132
|
-
const imageResults = paddleOcr.recognize("/path/to/image.png", 0, 0, 800, 600);
|
|
133
|
-
if (imageResults.length > 0) {
|
|
134
|
-
logi("图片文字识别成功");
|
|
135
|
-
imageResults.forEach((result) => {
|
|
136
|
-
logi(`识别文字: ${JSON.stringify(result)}`);
|
|
137
|
-
});
|
|
138
|
-
} else {
|
|
139
|
-
logi("图片中未识别到文字");
|
|
140
|
-
}
|
|
124
|
+
// 只更新检测长边,不重新加载模型
|
|
125
|
+
paddleOcr.setMaxSideLen(960);
|
|
141
126
|
|
|
142
|
-
//
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
0,
|
|
146
|
-
0,
|
|
147
|
-
1000,
|
|
148
|
-
800,
|
|
149
|
-
);
|
|
150
|
-
logi(`网络图片识别结果: ${JSON.stringify(urlResults)}`);
|
|
127
|
+
// 后续识别会使用新的检测长边
|
|
128
|
+
const results = paddleOcr.recognizeAbs("screen", 0, 0, 0, 0);
|
|
129
|
+
logi(`识别数量: ${results.length}`);
|
|
151
130
|
```
|
|
152
131
|
|
|
132
|
+
### 文字识别
|
|
133
|
+
|
|
153
134
|
#### recognizeAbs - 执行 OCR 识别,并将结果坐标映射为原图/全屏绝对坐标。
|
|
154
135
|
|
|
155
|
-
|
|
136
|
+
传入裁剪区域时,返回坐标会映射回原图或全屏坐标,可直接用于点击。
|
|
156
137
|
|
|
157
138
|
```typescript
|
|
158
139
|
function recognizeAbs(
|
|
@@ -165,81 +146,35 @@ function recognizeAbs(
|
|
|
165
146
|
): OCRResult[];
|
|
166
147
|
```
|
|
167
148
|
|
|
168
|
-
**示例:**
|
|
169
|
-
|
|
170
|
-
```javascript
|
|
171
|
-
const absResults = paddleOcr.recognizeAbs("screen", 100, 100, 500, 300);
|
|
172
|
-
if (absResults.length > 0) {
|
|
173
|
-
action.click(absResults[0].centerX, absResults[0].centerY);
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
#### findText - 在识别结果中查找目标文本并返回对应子串坐标。
|
|
178
|
-
|
|
179
|
-
```typescript
|
|
180
|
-
function findText(
|
|
181
|
-
input: string,
|
|
182
|
-
targetTexts: string[],
|
|
183
|
-
x?: number,
|
|
184
|
-
y?: number,
|
|
185
|
-
ex?: number,
|
|
186
|
-
ey?: number,
|
|
187
|
-
confidenceThreshold?: number,
|
|
188
|
-
exactMatch?: boolean,
|
|
189
|
-
): OCRResult[];
|
|
190
|
-
```
|
|
191
|
-
|
|
192
149
|
**参数:**
|
|
193
150
|
|
|
194
|
-
| 参数名 | 类型
|
|
195
|
-
| --------------------- |
|
|
196
|
-
| `input` | string
|
|
197
|
-
| `
|
|
198
|
-
| `
|
|
199
|
-
| `
|
|
200
|
-
| `
|
|
201
|
-
| `
|
|
202
|
-
| `confidenceThreshold` | number | 否 | 0.6 | 置信度阈值,默认值为 0.6 |
|
|
203
|
-
| `exactMatch` | boolean | 否 | false | 是否完整匹配;`false` 表示包含匹配,`true` 表示整条 OCR 识别结果文本必须等于目标文本 |
|
|
151
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
152
|
+
| --------------------- | ------ | -------- | ------ | ----------------------------------------------------------- |
|
|
153
|
+
| `input` | string | 是 | | 输入源,支持 imageId、URL 字符串、文件路径或 `"screen"` |
|
|
154
|
+
| `x` | number | 否 | 0 | 裁剪区域左上角 x 坐标;全屏识别传 0 |
|
|
155
|
+
| `y` | number | 否 | 0 | 裁剪区域左上角 y 坐标;全屏识别传 0 |
|
|
156
|
+
| `ex` | number | 否 | 0 | 裁剪区域右下角 x 坐标;全屏识别传 0 |
|
|
157
|
+
| `ey` | number | 否 | 0 | 裁剪区域右下角 y 坐标;全屏识别传 0 |
|
|
158
|
+
| `confidenceThreshold` | number | 否 | 0.6 | 置信度阈值,低于该值的识别结果会被过滤 |
|
|
204
159
|
|
|
205
160
|
**返回值:**
|
|
206
161
|
|
|
207
|
-
| 类型 | 描述
|
|
208
|
-
| ------------- |
|
|
209
|
-
|
|
|
162
|
+
| 类型 | 描述 |
|
|
163
|
+
| ------------- | ------------------------------------------------ |
|
|
164
|
+
| OCRResult[] | 识别结果数组,坐标为原图或全屏绝对坐标 |
|
|
210
165
|
|
|
211
166
|
**示例:**
|
|
212
167
|
|
|
213
168
|
```javascript
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
["登录", "确定"],
|
|
218
|
-
0,
|
|
219
|
-
0,
|
|
220
|
-
0,
|
|
221
|
-
0,
|
|
222
|
-
0.6,
|
|
223
|
-
false,
|
|
224
|
-
);
|
|
225
|
-
if (hitResults.length > 0) {
|
|
226
|
-
hitResults.forEach((item, index) => {
|
|
227
|
-
logi(
|
|
228
|
-
`命中 ${index + 1}: ${item.text}, 中心点: (${item.centerX}, ${item.centerY})`,
|
|
229
|
-
);
|
|
230
|
-
});
|
|
231
|
-
} else {
|
|
232
|
-
logi("未命中目标文本");
|
|
169
|
+
const absResults = paddleOcr.recognizeAbs("screen", 100, 100, 500, 300);
|
|
170
|
+
if (absResults.length > 0) {
|
|
171
|
+
action.click(absResults[0].centerX, absResults[0].centerY);
|
|
233
172
|
}
|
|
234
|
-
|
|
235
|
-
// 在指定区域查找目标文本(返回相对裁剪区域的坐标)
|
|
236
|
-
const regionHits = paddleOcr.findText("screen", ["下一步"], 100, 100, 500, 400);
|
|
237
|
-
logi(`区域命中数量: ${regionHits.length}`);
|
|
238
173
|
```
|
|
239
174
|
|
|
240
175
|
#### findTextAbs - 查找目标文本,并将结果坐标映射为原图/全屏绝对坐标。
|
|
241
176
|
|
|
242
|
-
|
|
177
|
+
传入裁剪区域时,返回坐标会映射回原图或全屏坐标,可直接用于点击。
|
|
243
178
|
|
|
244
179
|
```typescript
|
|
245
180
|
function findTextAbs(
|
|
@@ -254,6 +189,25 @@ function findTextAbs(
|
|
|
254
189
|
): OCRResult[];
|
|
255
190
|
```
|
|
256
191
|
|
|
192
|
+
**参数:**
|
|
193
|
+
|
|
194
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
195
|
+
| --------------------- | -------- | -------- | ------ | ------------------------------------------------------------------------ |
|
|
196
|
+
| `input` | string | 是 | | 输入源,支持 imageId、URL 字符串、文件路径或 `"screen"` |
|
|
197
|
+
| `targetTexts` | string[] | 是 | | 目标文本数组,例如 `["你好", "确定"]` |
|
|
198
|
+
| `x` | number | 否 | 0 | 裁剪区域左上角 x 坐标;全屏识别传 0 |
|
|
199
|
+
| `y` | number | 否 | 0 | 裁剪区域左上角 y 坐标;全屏识别传 0 |
|
|
200
|
+
| `ex` | number | 否 | 0 | 裁剪区域右下角 x 坐标;全屏识别传 0 |
|
|
201
|
+
| `ey` | number | 否 | 0 | 裁剪区域右下角 y 坐标;全屏识别传 0 |
|
|
202
|
+
| `confidenceThreshold` | number | 否 | 0.6 | 置信度阈值,低于该值的识别结果会被过滤 |
|
|
203
|
+
| `exactMatch` | boolean | 否 | false | 是否完整匹配;`false` 表示包含匹配,`true` 要求整条 OCR 文本等于目标文本 |
|
|
204
|
+
|
|
205
|
+
**返回值:**
|
|
206
|
+
|
|
207
|
+
| 类型 | 描述 |
|
|
208
|
+
| ------------- | ---------------------------------------------------------- |
|
|
209
|
+
| OCRResult[] | 匹配到的子串结果数组,坐标为原图或全屏绝对坐标 |
|
|
210
|
+
|
|
257
211
|
**示例:**
|
|
258
212
|
|
|
259
213
|
```javascript
|
package/docs/api/yolo.md
CHANGED
|
@@ -102,54 +102,20 @@ const modelId = yolo.load(
|
|
|
102
102
|
);
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
#### loadV11 - 加载 YOLOv11 模型(兼容 yolov8 模型),这是使用目标检测功能的前提。
|
|
106
|
-
|
|
107
|
-
```typescript
|
|
108
|
-
function loadV11(paramPath: string, binPath: string, nc?: number, useGpu?: boolean): string | null;
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
**参数:**
|
|
112
|
-
|
|
113
|
-
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
114
|
-
| ----------- | ------- | -------- | ------ | ------------------------------------------- |
|
|
115
|
-
| `paramPath` | string | 是 | | NCNN 模型的 param 文件绝对路径 |
|
|
116
|
-
| `binPath` | string | 是 | | NCNN 模型的 bin 文件绝对路径 |
|
|
117
|
-
| `nc` | number | 否 | 0 | 模型的标签数量;传 `0` 或省略时根据模型输出自动推断,显式传入但不匹配时检测返回空数组 |
|
|
118
|
-
| `useGpu` | boolean | 否 | false | 是否启用 GPU 加速 |
|
|
119
|
-
|
|
120
|
-
**返回值:**
|
|
121
|
-
|
|
122
|
-
| 类型 | 描述 |
|
|
123
|
-
| ---------------- | ----------------------------------------- |
|
|
124
|
-
| `string \| null` | 加载成功返回模型 ID 字符串,失败返回 null |
|
|
125
|
-
|
|
126
|
-
**示例:**
|
|
127
|
-
|
|
128
|
-
```javascript
|
|
129
|
-
// 加载 YOLOv11 模型
|
|
130
|
-
// 模型放在res目录
|
|
131
|
-
const modelId = yolo.loadV11(
|
|
132
|
-
"yolo11n_ncnn_model/model.ncnn.param",
|
|
133
|
-
"yolo11n_ncnn_model/model.ncnn.bin",
|
|
134
|
-
0, // 自动根据模型输出推断类别数量
|
|
135
|
-
false
|
|
136
|
-
);
|
|
137
|
-
|
|
138
|
-
if (modelId) {
|
|
139
|
-
logi(`模型加载成功,ID: ${modelId}`);
|
|
140
|
-
} else {
|
|
141
|
-
logi("模型加载失败,请检查文件路径和格式");
|
|
142
|
-
}
|
|
143
|
-
```
|
|
144
|
-
|
|
145
105
|
### 目标检测
|
|
146
106
|
|
|
147
|
-
####
|
|
107
|
+
#### detectAbs - 对指定区域执行目标检测,并将结果坐标映射为原图/全屏绝对坐标。
|
|
108
|
+
|
|
109
|
+
执行目标检测,识别图像中的物体并返回检测结果。传入裁剪区域时,结果坐标会映射回原图或全屏坐标,可直接用于点击;全屏检测时 `x/y/ex/ey` 传 `0`。
|
|
148
110
|
|
|
149
111
|
```typescript
|
|
150
|
-
function
|
|
112
|
+
function detectAbs(
|
|
151
113
|
modelId: string,
|
|
152
114
|
img: string,
|
|
115
|
+
x?: number,
|
|
116
|
+
y?: number,
|
|
117
|
+
ex?: number,
|
|
118
|
+
ey?: number,
|
|
153
119
|
targetSize?: number,
|
|
154
120
|
threshold?: number,
|
|
155
121
|
nmsThreshold?: number
|
|
@@ -158,29 +124,34 @@ function detect(
|
|
|
158
124
|
|
|
159
125
|
**参数:**
|
|
160
126
|
|
|
161
|
-
| 参数名
|
|
162
|
-
|
|
|
163
|
-
| `modelId`
|
|
164
|
-
| `img`
|
|
165
|
-
| `
|
|
166
|
-
| `
|
|
167
|
-
|
|
168
|
-
|
|
127
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
128
|
+
| -------------- | ------ | -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
129
|
+
| `modelId` | string | 是 | | 模型 ID,通过 `load` 获取 |
|
|
130
|
+
| `img` | string | 是 | | 图像输入源,支持 `"screen"`、图片文件路径、HTTP 图片地址或 imageId |
|
|
131
|
+
| `x` | number | 否 | 0 | 裁剪区域左上角 x 坐标;全屏检测传 0 |
|
|
132
|
+
| `y` | number | 否 | 0 | 裁剪区域左上角 y 坐标;全屏检测传 0 |
|
|
133
|
+
| `ex` | number | 否 | 0 | 裁剪区域右下角 x 坐标;全屏检测传 0 |
|
|
134
|
+
| `ey` | number | 否 | 0 | 裁剪区域右下角 y 坐标;全屏检测传 0 |
|
|
135
|
+
| `targetSize` | number | 否 | 640 | 模型推理输入边长,通常为 640(与模型训练时一致) |
|
|
136
|
+
| `threshold` | number | 否 | 0.4 | 置信度阈值,低于此值的检测结果会被过滤 |
|
|
137
|
+
| `nmsThreshold` | number | 否 | 0.5 | 非极大值抑制阈值,用于去除重叠检测框 |
|
|
169
138
|
|
|
170
139
|
**返回值:**
|
|
171
140
|
|
|
172
141
|
| 类型 | 描述 |
|
|
173
142
|
| -------------- | ---------------------------------------------- |
|
|
174
|
-
| `YoloResult[]` |
|
|
143
|
+
| `YoloResult[]` | 检测结果数组,坐标为原图或全屏绝对坐标 |
|
|
175
144
|
|
|
176
145
|
**示例:**
|
|
177
146
|
|
|
178
147
|
```javascript
|
|
179
148
|
// 首先加载模型
|
|
180
|
-
const modelId = yolo.
|
|
149
|
+
const modelId = yolo.load(
|
|
181
150
|
"/yolo11n_ncnn_model/model.ncnn.param",
|
|
182
151
|
"/yolo11n_ncnn_model/model.ncnn.bin",
|
|
183
|
-
0
|
|
152
|
+
0,
|
|
153
|
+
11,
|
|
154
|
+
false
|
|
184
155
|
);
|
|
185
156
|
|
|
186
157
|
if (!modelId) {
|
|
@@ -189,9 +160,13 @@ if (!modelId) {
|
|
|
189
160
|
}
|
|
190
161
|
|
|
191
162
|
// 检测当前屏幕
|
|
192
|
-
const screenResults = yolo.
|
|
163
|
+
const screenResults = yolo.detectAbs(
|
|
193
164
|
modelId,
|
|
194
165
|
"screen", // 使用当前屏幕
|
|
166
|
+
0,
|
|
167
|
+
0,
|
|
168
|
+
0,
|
|
169
|
+
0,
|
|
195
170
|
640, // 标准检测尺寸
|
|
196
171
|
0.4, // 置信度阈值
|
|
197
172
|
0.5 // NMS 阈值
|
|
@@ -212,10 +187,14 @@ screenResults.forEach((result, index) => {
|
|
|
212
187
|
logi(` 尺寸: ${result.width} x ${result.height}`);
|
|
213
188
|
});
|
|
214
189
|
|
|
215
|
-
//
|
|
216
|
-
const imageResults = yolo.
|
|
190
|
+
// 检测图片文件的指定区域
|
|
191
|
+
const imageResults = yolo.detectAbs(
|
|
217
192
|
modelId,
|
|
218
193
|
"/path/to/test_image.jpg",
|
|
194
|
+
100,
|
|
195
|
+
100,
|
|
196
|
+
500,
|
|
197
|
+
400,
|
|
219
198
|
640,
|
|
220
199
|
0.3, // 降低置信度阈值以检测更多物体
|
|
221
200
|
0.5
|
|
@@ -233,9 +212,13 @@ if (imageResults.length > 0) {
|
|
|
233
212
|
}
|
|
234
213
|
|
|
235
214
|
// 检测网络图片
|
|
236
|
-
const urlResults = yolo.
|
|
215
|
+
const urlResults = yolo.detectAbs(
|
|
237
216
|
modelId,
|
|
238
217
|
"https://example.com/test_image.jpg",
|
|
218
|
+
0,
|
|
219
|
+
0,
|
|
220
|
+
0,
|
|
221
|
+
0,
|
|
239
222
|
640,
|
|
240
223
|
0.5, // 提高置信度阈值以获得更可靠的结果
|
|
241
224
|
0.4
|
|
@@ -244,9 +227,13 @@ const urlResults = yolo.detect(
|
|
|
244
227
|
logi(`网络图片检测结果: ${urlResults.length} 个物体`);
|
|
245
228
|
|
|
246
229
|
// 高精度检测(降低阈值)
|
|
247
|
-
const highPrecisionResults = yolo.
|
|
230
|
+
const highPrecisionResults = yolo.detectAbs(
|
|
248
231
|
modelId,
|
|
249
|
-
|
|
232
|
+
"screen",
|
|
233
|
+
0,
|
|
234
|
+
0,
|
|
235
|
+
0,
|
|
236
|
+
0,
|
|
250
237
|
640,
|
|
251
238
|
0.2, // 更低的置信度阈值
|
|
252
239
|
0.3 // 更低的 NMS 阈值
|
|
@@ -255,9 +242,13 @@ const highPrecisionResults = yolo.detect(
|
|
|
255
242
|
logi(`高精度检测结果: ${highPrecisionResults.length} 个物体`);
|
|
256
243
|
|
|
257
244
|
// 快速检测(提高阈值)
|
|
258
|
-
const fastResults = yolo.
|
|
245
|
+
const fastResults = yolo.detectAbs(
|
|
259
246
|
modelId,
|
|
260
|
-
|
|
247
|
+
"screen",
|
|
248
|
+
0,
|
|
249
|
+
0,
|
|
250
|
+
0,
|
|
251
|
+
0,
|
|
261
252
|
416, // 更小的检测尺寸以提高速度
|
|
262
253
|
0.6, // 更高的置信度阈值
|
|
263
254
|
0.6 // 更高的 NMS 阈值
|
|
@@ -266,41 +257,6 @@ const fastResults = yolo.detect(
|
|
|
266
257
|
logi(`快速检测结果: ${fastResults.length} 个物体`);
|
|
267
258
|
```
|
|
268
259
|
|
|
269
|
-
#### detectAbs - 对指定区域执行目标检测,并将结果坐标映射为原图/全屏绝对坐标。
|
|
270
|
-
|
|
271
|
-
```typescript
|
|
272
|
-
function detectAbs(
|
|
273
|
-
modelId: string,
|
|
274
|
-
img: string,
|
|
275
|
-
x?: number,
|
|
276
|
-
y?: number,
|
|
277
|
-
ex?: number,
|
|
278
|
-
ey?: number,
|
|
279
|
-
targetSize?: number,
|
|
280
|
-
threshold?: number,
|
|
281
|
-
nmsThreshold?: number
|
|
282
|
-
): YoloResult[];
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
**示例:**
|
|
286
|
-
|
|
287
|
-
```javascript
|
|
288
|
-
const absResults = yolo.detectAbs(
|
|
289
|
-
modelId,
|
|
290
|
-
"screen",
|
|
291
|
-
100,
|
|
292
|
-
100,
|
|
293
|
-
500,
|
|
294
|
-
400,
|
|
295
|
-
640,
|
|
296
|
-
0.4,
|
|
297
|
-
0.5
|
|
298
|
-
);
|
|
299
|
-
if (absResults.length > 0) {
|
|
300
|
-
action.click(absResults[0].centerX, absResults[0].centerY);
|
|
301
|
-
}
|
|
302
|
-
```
|
|
303
|
-
|
|
304
260
|
### 资源管理
|
|
305
261
|
|
|
306
262
|
#### free - 释放指定模型的资源。
|