适用于方块类型缺口验证
/**
* 开始识别
*/
function start() {
var img = getScreenImage()
if (img) {
log("截图成功,进行识别滑块!");
} else {
log('截图失败,重新截图');
return;
};
var x = getPointX(img,0.7);
console.info("识别结果滑块X坐标:" + x);
Swipe(205, 1191, x+60, 1200,1500);
sleep(5000);
}
/**
* 获取缺口位置的x坐标
* 传入值 img, 识别精度(precision)
*/
function getPointX(img,precision){
var xCount = 0;
var finnalX = 0;
for(var x = 270; x < 950; x += 5){ //横向遍历像素点,间隔5个像素点
// var row = "";
var tempCount = 0
for(var y = 570; y < 1070; y+=5){ //找到黑点最多的y轴
if(isBlackPoint(x,y,img,precision)){
// row +="1";
tempCount += 1;
}else{
// row += "0";
}
}
if( tempCount >= xCount ){
xCount = tempCount;
finnalX = x
}
// console.log(row);
}
return finnalX
}
/**
* 判断点是否为黑色点
* 传入值 坐标(x,y), img, 识别精度(precision)
*/
function isBlackPoint(x, y,img,precision) {
var rgb = images.pixel(img,x,y); //此时获取到的是ARGB
var r = (rgb & 0xff0000) >> 16; //得到R
var g = (rgb & 0xff00) >> 8; //得到G
var b = (rgb & 0xff); //得到B
var criticalValue = 255 * (1 - precision);
if (r <= criticalValue && g <= criticalValue && b <= criticalValue) {
return true;
}
return false;
}
/**
* 判断点是否为白色点
* 传入值 坐标(x,y), img, 识别精度(precision)
*/
function isWhitePoint(x, y,img,precision) {
var rgb = images.pixel(img,x,y); //此时获取到的是ARGB
var r = (rgb & 0xff0000) >> 16; //得到R
var g = (rgb & 0xff00) >> 8; //得到G
var b = (rgb & 0xff); //得到B
var criticalValue = 255 * precision;
if (r >= criticalValue && g >= criticalValue && b >= criticalValue) {
return true;
}
return false;
}
/**
* 使用命令截图,返回imgae对像。
*/
function getScreenImage(){
shell("screencap /sdcard/tt_screen_cap1.png",true);
return images.read("/sdcard/tt_screen_cap1.png");
}