回答
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 生成,内容仅供参考