屏幕多点颜色匹配 (screen.is_colors)
声明
是否匹配 = screen.is_colors({
[max_miss = 允许最大未命中数,]
[xy_tolerance = 坐标容差,]
[csim_algorithm = 颜色相似度算法,]
{横坐标*, 纵坐标*, 颜色*},
{横坐标*, 纵坐标*, 颜色*},
...
}[, 颜色相似度])
参数
-
允许最大未命中数
整数型,可选参数,可以允许最多的不匹配的点的数量,默认为 0,也就是全命中才算匹配 -
坐标容差 20250228
整数型,可选参数,可以允许的坐标偏移量,超过这个值的点将被视为未命中,默认为 0,表示坐标必须完全匹配 -
颜色相似度算法 20250302
整数型,可选参数,颜色相似度算法,默认 0颜色相似度算法
0 为 XXT 默认算法,梯度陡峭,差值使相似度下降很快
1 为曼哈顿算法,梯度平滑
2 为欧几里得算法,梯度平滑 -
横坐标*, 纵坐标*
整数型,代表其中某点坐标 -
颜色*
整数型,代表其中某点需要匹配的颜色值 -
颜色相似度
整数型,可选参数,代表需要的颜色的相似度,取值范围 1~100,默认 100
返回值
- 是否匹配
布尔型,所有点的颜色都匹配则返回 true,否则返回 false
说明
匹配屏幕上若干点的颜色
示例
if screen.is_colors({
{ 509, 488, 0xec1c23}, -- 如果坐标 (509, 488) 的颜色与 0xec1c23 相似度在 90% 以上
{ 514, 470, 0x00adee}, -- 同时坐标 (514, 470) 的颜色与 0x00adee 相似度在 90% 以上
{ 508, 478, 0xffc823}, -- 同时坐标 (508, 478) 的颜色与 0xffc823 相似度在 90% 以上
{ 511, 454, 0xa78217}, -- 同时坐标 (511, 454) 的颜色与 0xa78217 相似度在 90% 以上
{ 521, 433, 0xd0d2d2}, -- 同时坐标 (521, 433) 的颜色与 0xd0d2d2 相似度在 90% 以上
}, 90) then -- 则匹配
sys.alert("匹配!")
else
sys.alert("不匹配!")
end
注:上述代码中使用了非本章函数 sys.alert