屏幕找色
在设备屏幕截图中查找指定的多个颜色点,支持相对坐标和绝对坐标两种模式,可设置相似度阈值和查找所有匹配位置。
💡 快捷取色
您可以在控制台的开发者工具中进行快捷取色,快速获取屏幕坐标和颜色值数组。

接口说明
接口类型
findColor参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deviceId | string | 是 | 设备ID |
| colors | array | 是 | 颜色数组,格式:[[x, y, "颜色"], ...] 或 [[x, y, "颜色|相似度"], ...] |
| rect | array | 否 | 搜索区域 [x1, y1, x2, y2],相对坐标模式时必填,绝对坐标模式时不需要 |
| multiple | boolean | 否 | 是否查找所有匹配位置,默认 false,绝对坐标模式时不需要 |
| spacing | number | 否 | 结果间最小距离(像素),默认 50,仅在 multiple=true 时有效 |
返回值
单个匹配(multiple = false 或绝对坐标模式):
javascript
{
x: 100, // 匹配点的X坐标
y: 200 // 匹配点的Y坐标
}多个匹配(multiple = true):
javascript
[
{ x: 100, y: 200 },
{ x: 150, y: 250 },
{ x: 200, y: 300 }
]未找到匹配:
javascript
null功能说明
坐标模式
findColor 支持两种坐标模式:
1. 绝对坐标模式
绝对坐标模式所有点的坐标都是屏幕绝对坐标:
- 不需要
rect和multiple参数 - 如果所有颜色点都匹配,返回第一个点的坐标
示例:
javascript
// 绝对坐标:所有点都是屏幕绝对坐标
colors: [
[245, 509, "00B4F9|1"], // 绝对坐标 (245, 509)
[284, 745, "A49696|0.95"], // 绝对坐标 (284, 745)
[290, 911, "9B8C89"] // 绝对坐标 (290, 911)
]2. 相对坐标模式
当颜色数组的第一个点为 [0, 0] 时,使用相对坐标模式:
- 第一个点
[0, 0]作为基准点,在rect区域内搜索 - 其他点的坐标相对于第一个点
- 可提供
rect参数,定义搜索区域 - 支持
multiple参数查找所有匹配
示例:
javascript
// 相对坐标:第一个点是 [0,0],其他点相对于第一个点
colors: [
[0, 0, "00B4F9|1"], // 基准点
[39, 236, "A49696|0.95"], // 相对基准点偏移 (39, 236)
[45, 402, "9B8C89"] // 相对基准点偏移 (45, 402)
]基本使用
示例1:绝对坐标模式
javascript
// 验证屏幕上的多个绝对坐标点是否匹配
const result = await apiInvoke('findColor', {
deviceId: 'P72578581E07',
colors: [
[245, 509, "00B4F9|1"], // 绝对坐标点1
[284, 745, "A49696|0.95"], // 绝对坐标点2
[290, 911, "9B8C89"] // 绝对坐标点3
]
// 不需要 rect 和 multiple 参数
});
if (result) {
console.log(`所有颜色点都匹配,基准点在 (${result.x}, ${result.y})`);
} else {
console.log('颜色点不匹配');
}示例2:相对坐标模式 - 查找所有匹配
javascript
// 查找所有匹配的位置
const results = await apiInvoke('findColor', {
deviceId: 'P72578581E07',
colors: [
[0, 0, "FFFFFF|0.9"],
[10, 10, "000000|0.9"]
],
rect: [0, 0, 800, 1200],
multiple: true,
spacing: 50 // 结果间最小距离
});
if (results && results.length > 0) {
console.log(`找到 ${results.length} 个匹配点`);
results.forEach((point, index) => {
console.log(`匹配点 ${index + 1}: (${point.x}, ${point.y})`);
});
}