跳到主要内容

图色类


截图

keepScreen 保持屏幕数据,优化速度

参数名必选类型说明
  keepScreen()
返回值类型说明
true/falseboolean是否截图成功

比色

cmpColor 多点比色封装,需要手动截图和释放

参数名必选类型说明
colorstring颜色点阵
thresholdfloat相似度,默认0.9
  if (keepScreen()) {
//默认不填相似度
if (cmpColor("291|1252|#515151-#101010,246|1241|#2B2B2B-#101010,105|617|#DFDFDF-#101010,305|260|#D5D5D5-#101010,499|265|#CECECE-#101010")) {
logd("首页")
clickPoint(111, 222)
sleep(500)
}

//修改相似度0.8
if (cmpColor("291|1252|#515151-#101010,246|1241|#2B2B2B-#101010,105|617|#DFDFDF-#101010,305|260|#D5D5D5-#101010,499|265|#CECECE-#101010", 0.8)) {
logd("首页")
clickPoint(111, 222)
sleep(500)
}
}

返回值类型说明
true/falseboolean是否找到

cmpColorEx 多点比色Ex封装,不需要手动截图和释放

参数名必选类型说明
colorstring颜色点阵
thresholdfloat相似度,默认0.9
    //默认不填相似度
if (cmpColorEx("291|1252|#515151-#101010,246|1241|#2B2B2B-#101010,105|617|#DFDFDF-#101010,305|260|#D5D5D5-#101010,499|265|#CECECE-#101010")) {
logd("首页")
clickPoint(111, 222)
sleep(500)
}

//修改相似度0.8
if (cmpColorEx("291|1252|#515151-#101010,246|1241|#2B2B2B-#101010,105|617|#DFDFDF-#101010,305|260|#D5D5D5-#101010,499|265|#CECECE-#101010", 0.8)) {
logd("首页")
clickPoint(111, 222)
sleep(500)
}
返回值类型说明
true/falseboolean是否找到

cmpMultiColor 多组比色封装,需要手动截图和释放

参数名必选类型说明
colorstring颜色点阵
thresholdfloat相似度,默认0.9
  let 流程_进入微信注册 = {
"桌面": "611|508|#07C762-#101010,609|472|#FFFFFF-#101010,654|325|#FFC600-#101010,636|303|#FEC106-#101010,503|501|#20091B-#101010",
"选择注册": "172|1246|#0E9956-#101010,157|1246|#F2F2F2-#101010,540|1247|#FFFCFA-#101010,498|1249|#07C160-#101010,491|1148|#030F1B-#101010",
"选择注册方式": "208|865|#07C160-#101010,270|875|#FFFDFF-#101010,187|1064|#2C2C2C-#101010,214|1062|#2C2C2C-#101010,434|1063|#DBDBDB-#101010",
"注册页": "291|1252|#515151-#101010,246|1241|#2B2B2B-#101010,105|617|#DFDFDF-#101010,305|260|#D5D5D5-#101010,499|265|#CECECE-#101010",
}
let 临时色对象 = cmpPreParse(流程_进入微信注册)
tag_进入注册页: while (true) {
sleep(10)
if (!keepScreen()) {
continue
}
//默认相似度0.9
if (cmpMultiColor(临时色对象)) {
//指定相似度
//if (cmpMultiColor(临时色对象, 0.8)) {
logd("当前页面是:" + gCmpKey)
switch (gCmpKey) {
case "桌面":
clickPoint(633, 474)
sleep(500)
break
case "选择注册":
clickPoint(553, 1248)
sleep(500)
break
case "选择注册方式":
clickPoint(381, 872)
sleep(500)
break
case "注册页":
break tag_进入注册页
}
}
}
logd("脚本结束")


返回值类型说明
桌面String颜色对象的key值

cmpMultiColorEx 多组比色Ex封装,不需要手动截图和释放

参数名必选类型说明
colorstring颜色点阵
thresholdfloat相似度,默认0.9
let 流程_进入微信注册 = {
"桌面": "611|508|#07C762-#101010,609|472|#FFFFFF-#101010,654|325|#FFC600-#101010,636|303|#FEC106-#101010,503|501|#20091B-#101010",
"选择注册": "172|1246|#0E9956-#101010,157|1246|#F2F2F2-#101010,540|1247|#FFFCFA-#101010,498|1249|#07C160-#101010,491|1148|#030F1B-#101010",
"选择注册方式": "208|865|#07C160-#101010,270|875|#FFFDFF-#101010,187|1064|#2C2C2C-#101010,214|1062|#2C2C2C-#101010,434|1063|#DBDBDB-#101010",
"注册页": "291|1252|#515151-#101010,246|1241|#2B2B2B-#101010,105|617|#DFDFDF-#101010,305|260|#D5D5D5-#101010,499|265|#CECECE-#101010",
}
let 临时色对象 = cmpPreParse(流程_进入微信注册)
tag_进入注册页: while (true) {
//默认相似度0.9
if (cmpMultiColorEx(临时色对象)) {
//指定相似度
//if (cmpMultiColorEx(临时色对象, 0.8)) {
logd("当前页面是:" + gCmpKey)
switch (gCmpKey) {
case "桌面":
clickPoint(633, 474)
sleep(500)
break
case "选择注册":
clickPoint(553, 1248)
sleep(500)
break
case "选择注册方式":
clickPoint(381, 872)
sleep(500)
break
case "注册页":
break tag_进入注册页
}
}
sleep(10)
}
logd("脚本结束")


返回值类型说明
桌面String颜色对象的key值

cmpPreParse 多点比色预处理

参数名必选类型说明
colorsObject未处理的颜色对象
let 流程_进入微信注册 = {
"桌面": "611|508|#07C762-#101010,609|472|#FFFFFF-#101010,654|325|#FFC600-#101010,636|303|#FEC106-#101010,503|501|#20091B-#101010",
"选择注册": "172|1246|#0E9956-#101010,157|1246|#F2F2F2-#101010,540|1247|#FFFCFA-#101010,498|1249|#07C160-#101010,491|1148|#030F1B-#101010",
"选择注册方式": "208|865|#07C160-#101010,270|875|#FFFDFF-#101010,187|1064|#2C2C2C-#101010,214|1062|#2C2C2C-#101010,434|1063|#DBDBDB-#101010",
"注册页": "291|1252|#515151-#101010,246|1241|#2B2B2B-#101010,105|617|#DFDFDF-#101010,305|260|#D5D5D5-#101010,499|265|#CECECE-#101010",
}
let 临时色对象 = cmpPreParse(流程_进入微信注册)
返回值类型说明
{{keys: *[], values: *[]}}`Object处理好的颜色对象

找色

findColor 单点找色封装,需截图

参数名必选类型说明
colorstring颜色点阵
startXint范围起点x坐标,默认0,全屏
startYint范围起点y坐标,默认0,全屏
endXint范围终点x坐标,默认0,全屏
endYint范围终点y坐标,默认0,全屏
thresholdfloat相似度,默认0.9
orzint查找方向,默认1
if (keepScreen()) {
//只填颜色,其他默认
if (findColor("#909CB2-#101010,#0D1518-#101010,#878F9A-#101010,#091114-#101010")) {
logd("找到色点", JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制范围
if (findColor("#909CB2-#101010,#0D1518-#101010,#878F9A-#101010,#091114-#101010", 100, 100, 500, 500)) {
logd("找到色点", JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制范围,指定相似度
if (findColor("#909CB2-#101010,#0D1518-#101010,#878F9A-#101010,#091114-#101010", 100, 100, 500, 500, 0.8)) {
logd("找到色点", JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制范围,指定相似度,指定查找方向
if (findColor("#909CB2-#101010,#0D1518-#101010,#878F9A-#101010,#091114-#101010", 100, 100, 500, 500, 0.8, 2)) {
logd("找到色点", JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
}
返回值类型说明
{x:500,y:600}Object坐标点x,y对象

findColorEx 单点找色Ex封装,无需截图

参数名必选类型说明
colorstring颜色点阵
startXint范围起点x坐标,默认0,全屏
startYint范围起点y坐标,默认0,全屏
endXint范围终点x坐标,默认0,全屏
endYint范围终点y坐标,默认0,全屏
thresholdfloat相似度,默认0.9
orzint查找方向,默认1
//只填颜色,其他默认
if (findColorEx("#909CB2-#101010,#0D1518-#101010,#878F9A-#101010,#091114-#101010")) {
logd("找到色点", JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制范围
if (findColorEx("#909CB2-#101010,#0D1518-#101010,#878F9A-#101010,#091114-#101010", 100, 100, 500, 500)) {
logd("找到色点", JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制范围,指定相似度
if (findColorEx("#909CB2-#101010,#0D1518-#101010,#878F9A-#101010,#091114-#101010", 100, 100, 500, 500, 0.8)) {
logd("找到色点", JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制范围,指定相似度,指定查找方向
if (findColorEx("#909CB2-#101010,#0D1518-#101010,#878F9A-#101010,#091114-#101010", 100, 100, 500, 500, 0.8, 2)) {
logd("找到色点", JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
返回值类型说明
{x:500,y:600}Object坐标点x,y对象

findMultiColor 多点找色封装,需要截图及释放

参数名必选类型说明
colorArrArray颜色数组
thresholdOrArrayfloat或数组[]相似度,默认0.9 或[起始x,起始y,结束x,结束y,相似度,查找方向]
orzint查找方向,默认1
let 多点找色 = {
//只填颜色
"首页": [
"#05DB6B-#101010", "-27|-29|#0FD96D-#101010,70|-20|#01DE6D-#101010,72|68|#00C860-#101010,-23|68|#00D05F-#101010,49|44|#FFFEFF-#101010,-19|7|#FEFFFF-#101010,32|-8|#FFFBFD-#101010"
],
//限制比色范围
"选择注册": ["#FEFFFB-#101010",
"0|0|#FEFFFB-#101010,-126|-32|#07C160-#101010,155|-12|#07C160-#101010,153|33|#08C060-#101010,-131|34|#03C35E-#101010,39|7|#DFFFED-#101010,-8|11|#EBFFF1-#101010"
, 370, 1150, 745, 1321
],
//限制比色范围,指定相似度
"选择注册方式": [
"#FFFFFD-#101010", "-56|-25|#07C160-#101010,358|39|#08BF63-#101010,34|-171|#D6D6D6-#101010,186|-168|#D6D6D6-#101010"
, 73, 657, 670, 955, 0.8
],
//限制比色范围,指定相似度,指定查找方向
"注册页面": [
"#909CB2-#101010", "-2|4|#0D1518-#101010,48|-11|#878F9A-#101010,52|-8|#091114-#101010"
, 345, 1046, 659, 1143, 0.8, 2
]
}
console.time("1")
tag_多点找色:while (true) {
sleep(10)
if (!keepScreen()) {
continue
}
for (let key in 多点找色) {
// logd(key)
if (findMultiColor(多点找色[key])) {
logd(key)
switch (key) {
case "注册页面":
break tag_多点找色
default:
clickPoint(gPoint.x, gPoint.y)
sleep(500)
break
}
}
}
}
logd(console.timeEnd("1"))

//新增用法,第二个参数,相似度,升级为支持数组,数组里自定义找色范围,如下
if (findMultiColor(多点找色.首页, [起始x, 起始y, 结束x, 结束y, 相似度, 查找方向])) {

}
if (findMultiColor(多点找色.首页, [0, 0, 500, 500, 0.9, 1])) {

}
返回值类型说明
{x:500,y:600}Object坐标点x,y对象

findMultiColorEx 多点找色Ex封装,不需要截图及释放

参数名必选类型说明
colorArrArray颜色数组
thresholdOrArrayfloat或数组相似度,默认0.9,或数组[起始x, 起始y, 结束x, 结束y, 相似度, 查找方向 ]
orzint查找方向,默认1
let 多点找色 = {
//只填颜色
"首页": [
"#05DB6B-#101010", "-27|-29|#0FD96D-#101010,70|-20|#01DE6D-#101010,72|68|#00C860-#101010,-23|68|#00D05F-#101010,49|44|#FFFEFF-#101010,-19|7|#FEFFFF-#101010,32|-8|#FFFBFD-#101010"
],
//限制比色范围
"选择注册": ["#FEFFFB-#101010",
"0|0|#FEFFFB-#101010,-126|-32|#07C160-#101010,155|-12|#07C160-#101010,153|33|#08C060-#101010,-131|34|#03C35E-#101010,39|7|#DFFFED-#101010,-8|11|#EBFFF1-#101010"
, 370, 1150, 745, 1321
],
//限制比色范围,指定相似度
"选择注册方式": [
"#FFFFFD-#101010", "-56|-25|#07C160-#101010,358|39|#08BF63-#101010,34|-171|#D6D6D6-#101010,186|-168|#D6D6D6-#101010"
, 73, 657, 670, 955, 0.8
],
//限制比色范围,指定相似度,指定查找方向
"注册页面": [
"#909CB2-#101010", "-2|4|#0D1518-#101010,48|-11|#878F9A-#101010,52|-8|#091114-#101010"
, 345, 1046, 659, 1143, 0.8, 2
]
}
console.time("1")
tag_多点找色:while (true) {
sleep(10)
for (let key in 多点找色) {
// logd(key)
if (findMultiColorEx(多点找色[key])) {
logd(key)
switch (key) {
case "注册页面":
break tag_多点找色
default:
clickPoint(gPoint.x, gPoint.y)
sleep(500)
break
}
}
}
}
logd(console.timeEnd("1"))

//新增用法,第二个参数,相似度,升级为支持数组,数组里自定义找色范围,如下
if (findMultiColor(多点找色.首页, [起始x, 起始y, 结束x, 结束y, 相似度, 查找方向])) {

}
if (findMultiColor(多点找色.首页, [0, 0, 500, 500, 0.9, 1])) {

}
返回值类型说明
{x:500,y:600}Object坐标点x,y对象

透明图找图

findImageByColor 透明找图封装,不需初始化openCV

参数名必选类型说明
imgNameStringres文件夹中png文件名
startXNumber范围起始X坐标
startYNumber范围起始Y坐标
endXNumber范围结束X坐标
endYNumber范围结束Y坐标
thresholdfloat相似度,0.4-0.6才能找得到,应该是有bug
laoleng.EC.init()
while (true) {
sleep(10)
if (!keepScreen()) {
continue
}
//只填图片名
if (findImageByColor("图片名")) {
logd("1:" + JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制查找范围
if (findImageByColor("图片名", 100, 100, 500, 500)) {
logd("1:" + JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制查找范围,并指定相似度
if (findImageByColor("图片名", 100, 100, 500, 500, 0.6)) {
logd("1:" + JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
}
返回值类型说明
{x:500,y:600}Object坐标点x,y对象

findImageByColorAll 透明找图封装,返回多个坐标,不需初始化openCV

参数名必选类型说明
imgNameStringres文件夹中png文件名
startXNumber范围起始X坐标
startYNumber范围起始Y坐标
endXNumber范围结束X坐标
endYNumber范围结束Y坐标
thresholdfloat相似度,默认0.9
limitNumber返回找图个数,默认1
laoleng.EC.init()
//不需初始化openCV
laoleng.EC.initImage(false)
while (true) {
sleep(10)
if (!keepScreen()) {
continue
}
//只填图片名
if (findImageByColorAll("图片名")) {
logd("1:" + JSON.stringify(gPointAll))
for (let i = 0; i < gPointAll.length; i++) {
logd(gPointAll[i].x, gPointAll[i].y)
clickPoint(gPointAll[i].x, gPointAll[i].y)
sleep(500)
}

}
//限制查找范围
if (findImageByColorAll("图片名", 100, 100, 500, 500)) {
logd("1:" + JSON.stringify(gPointAll))
for (let i = 0; i < gPointAll.length; i++) {
logd(gPointAll[i].x, gPointAll[i].y)
clickPoint(gPointAll[i].x, gPointAll[i].y)
sleep(500)
}
}
//限制查找范围,并指定相似度
if (findImageByColorAll("图片名", 100, 100, 500, 500, 0.6)) {
logd("1:" + JSON.stringify(gPointAll))
for (let i = 0; i < gPointAll.length; i++) {
logd(gPointAll[i].x, gPointAll[i].y)
clickPoint(gPointAll[i].x, gPointAll[i].y)
sleep(500)
}
}
//限制查找范围,并指定相似度,指定返回值个数
if (findImageByColorAll("图片名", 100, 100, 500, 500, 0.6, 5)) {
logd("1:" + JSON.stringify(gPointAll))
for (let i = 0; i < gPointAll.length; i++) {
logd(gPointAll[i].x, gPointAll[i].y)
clickPoint(gPointAll[i].x, gPointAll[i].y)
sleep(500)
}
}
}
返回值类型说明
[{x:500,y:600}]Object数组坐标点x,y对象数组

opencv找图

findImage openCV找图封装,需要截图,需要初始化openCV

参数名必选类型说明
imgNameStringres文件夹中png文件名
startXNumber范围起始X坐标
startYNumber范围起始Y坐标
endXNumber范围结束X坐标
endYNumber范围结束Y坐标
thresholdfloat相似度,默认0.9
weakThresholdfloat最低相似度,默认threshold-0.2
laoleng.EC.init()
laoleng.EC.initImage()
while (true) {
sleep(10)
if (!keepScreen()) {
continue
}
//只填图片名
if (findImage("图片名")) {
logd("1:" + JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制查找范围
if (findImage("图片名", 100, 100, 500, 500)) {
logd("1:" + JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制查找范围,并指定相似度
if (findImage("图片名", 100, 100, 500, 500, 0.8)) {
logd("1:" + JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制查找范围,并指定相似度,指定最低相似度
if (findImage("图片名", 100, 100, 500, 500, 0.8, 0.5)) {
logd("1:" + JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
}
返回值类型说明
{ x: 500, y: 600, top: 300, bottom: 500, left: 300, right: 500 }Object坐标点x,y对象

findImageEx openCV找图封装,不需要截图,需要初始化openCV

参数名必选类型说明
imgNameStringres文件夹中png文件名
startXNumber范围起始X坐标
startYNumber范围起始Y坐标
endXNumber范围结束X坐标
endYNumber范围结束Y坐标
thresholdfloat相似度,默认0.9
weakThresholdfloat最低相似度,默认threshold-0.2
laoleng.EC.init()
laoleng.EC.initImage()
while (true) {
sleep(10)
//只填图片名
if (findImageEx("图片名")) {
logd("1:" + JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制查找范围
if (findImageEx("图片名", 100, 100, 500, 500)) {
logd("1:" + JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制查找范围,并指定相似度
if (findImageEx("图片名", 100, 100, 500, 500, 0.8)) {
logd("1:" + JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
//限制查找范围,并指定相似度,指定最低相似度
if (findImageEx("图片名", 100, 100, 500, 500, 0.8, 0.5)) {
logd("1:" + JSON.stringify(gPoint))
clickPoint(gPoint.x, gPoint.y)
sleep(500)
}
}
返回值类型说明
{ x: 500, y: 600, top: 300, bottom: 500, left: 300, right: 500 }Object坐标点x,y对象