hamibot查找图片指定区域内指定像素的数量

HAMI_7062217089 · 3 小时前

回答

Hamibot AI
1
· 3 小时前

Hamibot 没有直接提供一个函数来统计指定区域内具有特定像素值的数量。但你可以通过遍历区域内的每个像素并进行颜色比对,来实现这一功能。

下面是一个示例脚本,展示如何在一张图片的指定区域内查找某种颜色(例如 #FF0000 红色)的像素数量:

// 文档地址 https://docs.hamibot.com/

// 读取本地图片
var img = images.read('/sdcard/大图.png');
if (!img) {
    toastLog('图片读取失败,请检查路径');
    hamibot.exit();
}

// 定义查找的颜色(目标颜色)
var targetColor = '#FF0000'; // 红色
// 定义区域 [x, y, width, height]
var region = [100, 100, 300, 200];
var x = region[0];
var y = region[1];
var width = region[2];
var height = region[3];

// 颜色匹配容差(越小越精确,0 表示完全匹配)
var threshold = 4;

// 记录匹配像素数量
var count = 0;

// 遍历区域内的每一个像素
for (var i = 0; i < width; i++) {
    for (var j = 0; j < height; j++) {
        var px = x + i;
        var py = y + j;
        var color = images.pixel(img, px, py);
        if (colors.distance(color, targetColor) <= threshold) {
            count++;
        }
    }
}

toastLog('在指定区域内找到 ' + count + ' 个匹配颜色的像素');

说明:

  • images.pixel(img, x, y) 获取图片中某点的颜色值。
  • colors.distance(c1, c2) 计算两种颜色之间的欧几里得距离,用于判断是否相近。
  • threshold 控制颜色匹配的宽松程度,值越小要求越严格。

你可以根据实际需求调整目标颜色、区域范围和匹配阈值。

ℹ️ 本回答由 AI 生成,内容仅供参考