Script 1.8.1

seekImage

原型:

seekImage(imageName)
seekImage(imageName, sim)
seekImage(topLeftX, topLeftY, bottomRightX, bottomRightY, imageName)
seekImage(topLeftX, topLeftY, bottomRightX, bottomRightY, imageName, sim)
seekImage(imageInfo)
seekImage(imageInfo, sim)

注,在版本1.8.1之后,又新增了两个seekImage函数,其原型如下:
seekImage(topLeftX, topLeftY, bottomRightX, bottomRightY, imageName, sim, isTheSameImage)
seekImage(imageName, sim, isTheSameImage)

其最后一个参数为isTheSameImage, 当此值为true时,表示要寻找的小图和大图取自同一台手机,因此在找图时无需缩放,也无需进行相似查找。对于在同一台手机上的找图行为,这两个函数更加快速准确。

描述:

在全屏或指定区域范围内寻找指定图片的坐标,支持相似查找。如找到目标图,则返回找到位置的左上角坐标。该函数有 6 种重载方法,对应不同的参数。

需要注意的是,尽管我们支持在一台手机上截图,而在另一台手机上搜图,但这两台手机的高宽比例必须一致。此外,如果手机截图是在横屏时获取的,找图时也必须保证手机是横屏的;同理,纵屏截图也必须在纵屏时查找。而且,如果参数 scalable=true,所截的图必须是在分辨率为 720x1280 的手机上截取。因为当 scalable=true 时,我们会先将当前手机屏幕缩小到 720x1280 的分辨率,然后再在缩小后的屏幕上搜索目标图。

获取截图的方法:

您可以调用函数 screenshot(filePath , imageType ,x1 ,y1 ,x2 ,y2) 截取当前手机屏幕的图像。在该图上,使用 windows 的画图工具,剪切感兴趣的部分另存为目标 BMP 图。之所以要存为 BMP 图,是因为目前这个版本支持 BMP, PNG, JPEG,在未来的开发计划中,我们将逐步提供各种图像格式的支持。 此外,为了保证搜图的效率,也就是尽量快地搜图,剪图时请遵守下面两个原则:
尽量选择有特点的区域
尽量选择小的区域
当搜图相似度不为 1.0 时,如果相似度越小,目标图的像素越多,则需进行的计算越多,所以搜图的速度越慢。但是如果遵守了上面两个原则,在理想情况下,720x1280 的分辨率下,以相似度 1.0 全屏搜图,耗时不会超过 30ms。如果您在搜图时进一步指定屏幕上的搜图范围,而非进行全屏搜索,那么速度将会进一步提升。

一种很影响搜图速度的习惯是:随意选择一大块特征不明显的目标区域,以极低的相似度进行全屏搜图,竟管也能找到目标图,但其速度恐怕是难以忍受的。

参数:

topLeftX:屏幕上指定范围左上角 X 坐标
topLeftY:屏幕上指定范围左上角 Y 坐标
bottomRightX:屏幕上指定范围右下角X坐标
bottomRightY:屏幕上指定范围右下角Y坐标
imageName:图像绝对路径
imageInfo:图像信息,成员结构请参阅《公共对象结构》下的《ImageInfo对象》
sim: 相似度,取值范围为[0.0, 1.0]

返回值:

Coord 对象:找到图像的左上角坐标

示例:
// 全屏查找指定图像
var ret = device.seekImage("E:/Temp/7/aa/1.png");
print("Last Error: " + lastError());
print("Center X: " + ret.x);
print("Center Y: " + ret.y);

// 全屏查找指定图像,指定相似度
var ret = device.seekImage("E:/Temp/7/aa/1.png“, 1.0);
print("Last Error: " + lastError());
print("Center X: " + ret.x);
print("Center Y: " + ret.y);

// 指定区域查找指定图像
var ret = device.seekImage(0, 0, 719, 1279, "E:/Temp/7/aa/1.png");
print("Last Error: " + lastError());
print("Center X: " + ret.x);
print("Center Y: " + ret.y);

// 指定区域查找指定图像,指定相似度
var ret = device.seekImage(0, 0, 719, 1279, "E:/Temp/7/aa/1.png", 1.0);
print("Last Error: " + lastError());
print("Center X: " + ret.x);
print("Center Y: " + ret.y);

// 创建ImageInfo对象
var imageInfo = new ImageInfo();
imageInfo.imagePath="E:\\Temp\\720s.bmp";
imageInfo.x=3;
imageInfo.y=3;
imageInfo.width=device.script_x-10;
imageInfo.height=device.script_y -10;
imageInfo.srcResolutionX=720;
imageInfo.srcResolutionY=1280;

// 查找指定ImageInfo对象图像
var ret = device.seekImage(imageInfo);
print("Last Error: " + lastError());
print("Center X: " + ret.x);
print("Center Y: " + ret.y);

// 查找指定ImageInfo对象图像,指定相似度
var ret = device.seekImage(imageInfo, 1.0);
print("Last Error: " + lastError());
print("Center X: " + ret.x);
print("Center Y: " + ret.y);