Skip to content

Find Color

Find specified multiple color points in device screenshot, supports relative and absolute coordinate modes, configurable similarity threshold and finding all matching locations.

💡 Quick Color Picker

You can use the quick color picker in the console developer tools to quickly get screen coordinates and color value arrays.

Quick Color Picker Tool

Interface Description

Interface Type

findColor

Parameters

ParameterTypeRequiredDescription
deviceIdstringYesDevice ID
colorsarrayYesColor array, format: [[x, y, "color"], ...] or [[x, y, "color|similarity"], ...]
rectarrayNoSearch area [x1, y1, x2, y2], required in relative coordinate mode, not needed in absolute coordinate mode
multiplebooleanNoWhether to find all matching locations, default false, not needed in absolute coordinate mode
spacingnumberNoMinimum distance between results (pixels), default 50, only effective when multiple=true

Return Value

Single Match (multiple = false or absolute coordinate mode):

javascript
{
    x: 100,  // X coordinate of match point
    y: 200   // Y coordinate of match point
}

Multiple Matches (multiple = true):

javascript
[
    { x: 100, y: 200 },
    { x: 150, y: 250 },
    { x: 200, y: 300 }
]

No Match Found:

javascript
null

Feature Description

Coordinate Modes

findColor supports two coordinate modes:

1. Absolute Coordinate Mode

In absolute coordinate mode, all points use screen absolute coordinates:

  • No need for rect and multiple parameters
  • If all color points match, returns the first point's coordinates

Example:

javascript
// Absolute coordinates: all points are screen absolute coordinates
colors: [
    [245, 509, "00B4F9|1"],   // Absolute coordinate (245, 509)
    [284, 745, "A49696|0.95"], // Absolute coordinate (284, 745)
    [290, 911, "9B8C89"]      // Absolute coordinate (290, 911)
]

2. Relative Coordinate Mode

When the first point of the color array is [0, 0], relative coordinate mode is used:

  • The first point [0, 0] serves as the reference point, searched within the rect area
  • Other points' coordinates are relative to the first point
  • Can provide rect parameter to define search area
  • Supports multiple parameter to find all matches

Example:

javascript
// Relative coordinates: first point is [0,0], other points relative to first point
colors: [
    [0, 0, "00B4F9|1"],      // Reference point
    [39, 236, "A49696|0.95"], // Relative offset from reference point (39, 236)
    [45, 402, "9B8C89"]      // Relative offset from reference point (45, 402)
]

Basic Usage

Example 1: Absolute Coordinate Mode

javascript
// Verify if multiple absolute coordinate points on screen match
const result = await apiInvoke('findColor', {
    deviceId: 'P72578581E07',
    colors: [
        [245, 509, "00B4F9|1"],   // Absolute coordinate point 1
        [284, 745, "A49696|0.95"], // Absolute coordinate point 2
        [290, 911, "9B8C89"]      // Absolute coordinate point 3
    ]
    // No need for rect and multiple parameters
});

if (result) {
    console.log(`All color points match, reference point at (${result.x}, ${result.y})`);
} else {
    console.log('Color points do not match');
}

Example 2: Relative Coordinate Mode - Find All Matches

javascript
// Find all matching locations
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  // Minimum distance between results
});

if (results && results.length > 0) {
    console.log(`Found ${results.length} matching points`);
    results.forEach((point, index) => {
        console.log(`Match point ${index + 1}: (${point.x}, ${point.y})`);
    });
}

Cooperation: try.catch@foxmail.com