【JavaScript】在全屏或指定区域范围内寻找指定图片的坐标(找图)

原型:

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, beGray)
seekImage(imageName, sim, beGray)

是否支持多设备:

不支持

对应的 REST API:

在全屏或指定区域范围内寻找指定图片的坐标

描述:

    在全屏或指定区域范围内寻找指定图片的坐标,支持相似查找。如找到目标图,则返回找到位置的中间点坐标。该函数有以上原型方法,对应不同的参数。

注意:

   尽管我们支持在一台手机上截图,而在另一台手机上搜图,但这两台手机的高宽比例必须一致。此外,如果手机截图是在横屏时获取的,找图时也必须保证手机是横屏的;同理,纵屏截图也必须在纵屏时查找。
   目前这个版本仅支持bmp,在未来的开发计划中,我们将逐步提供各种图像格式的支持。

   更多信息请看seekImage快速入门

参数:

  • seekImage(imageName)

  • seekImage(imageName, sim)

    imageName:图像绝对路径,必须是bmp类型
    sim: 相似度,取值范围为[0.0,1.0]。1表示图像完全匹配。该值越小,对相似度的要求也越低。如果为0,则该函数返回值为与搜索图最相似区域的中心坐标。 不填sim表示使用缺省的相似度1.0.

  • seekImage(topLeftX, topLeftY, bottomRightX, bottomRightY, imageName)

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

    topLeftX:屏幕上指定范围左上角X坐标
    topLeftY:屏幕上指定范围左上角Y坐标
    bottomRightX:屏幕上指定范围右下角X坐标
    bottomRightY:屏幕上指定范围右下角Y坐标
    imageName:图像绝对路径,必须是bmp类型
    sim: 相似度,取值范围为[0.0,1.0]。1表示图像完全匹配。该值越小,对相似度的要求也越低。如果为0,则该函数返回值为与搜索图最相似区域的中心坐标。不填sim表示使用缺省的相似度1.0.

  • seekImage(imageInfo)

  • seekImage(imageName, sim)

    imageInfo:ImageInfo对象,脚本中用于存储图像信息的对象,其成员变量包括:
    a) imagePath: 图像的绝对路径
    b) x: 屏幕搜索范围的左上角X坐标
    c) y: 屏幕搜索范围的左上角Y坐标 
    d) width: 屏幕搜索范围的宽度
    e) height: 屏幕搜索范围的高度
    f) srcResolutionX: 要搜索的图像从那款分辨率的手机上获得的,此参数为该分辨率的宽度
    g) srcResolutionY: 要搜索的图像从那款分辨率的手机上获得的,此参数为该分辨率的高度

  • seekImage(topLeftX, topLeftY, bottomRightX, bottomRightY, imageName, sim, beGray)

  • seekImage(imageName, sim, beGray)

    topLeftX:屏幕上指定范围左上角X坐标
    topLeftY:屏幕上指定范围左上角Y坐标
    bottomRightX:屏幕上指定范围右下角X坐标
    bottomRightY:屏幕上指定范围右下角Y坐标
    imageName:图像绝对路径,必须是bmp类型
    sim: 相似度,取值范围为[0.0,1.0]。1表示图像完全匹配。该值越小,对相似度的要求也越低。如果为0,则该函数返回值为与搜索图最相似区域的中心坐标。不填sim表示使用缺省的相似度1.0.
    beGray:当此值为true时(默认为true),表示图片要先进行灰度处理,然后再进行找图。当此值为false时候,表示图片不进行任何处理就进行找图,当然灰度处理后找图速度更快。

返回值:

对象:Coord 对象:可以通过获取到的对象找到图像的中心点坐标,比如coord.x;coord.y;

示例:

在全屏或指定区域范围内寻找指定图片的坐标

指定图片如下图所示:
【JavaScript】在全屏或指定区域范围内寻找指定图片的坐标(找图)

手机屏幕如下图所示:【JavaScript】在全屏或指定区域范围内寻找指定图片的坐标(找图)

//seekImage(imageName) 示例,全屏查找指定图像
var device = Device.getMain(); //获取当前设备对象
var ret = device.seekImage("E:\\sigmaTC\\产品20180611\\image\\image1080.bmp"); 
if (ret != null){
    print("Center X: " + ret.x);
    print("Center Y: " + ret.y);
} else {
    print("没有在手机屏幕找到该图");
}

// seekImage(imageName, sim)示例,全屏查找指定图像,指定相似度
var device = Device.getMain(); //获取当前设备对象
var ret = device.seekImage("E:\\sigmaTC\\产品20180611\\image\\image1080.bmp", 1.0); 
if (ret != null){
    print("Center X: " + ret.x);
    print("Center Y: " + ret.y);
} else {
    print("没有在手机屏幕找到该图");
}


//seekImage(topLeftX, topLeftY, bottomRightX, bottomRightY, imageName)示例,指定区域查找指定图像
var device = Device.getMain(); //获取当前设备对象
var ret = device.seekImage(13, 422, 583, 986, "E:\\sigmaTC\\产品20180611\\image\\image1080.bmp"); 
if (ret != null){
    print("Center X: " + ret.x);
    print("Center Y: " + ret.y);
} else {
    print("没有在手机屏幕找到该图");
}


//seekImage(topLeftX, topLeftY, bottomRightX, bottomRightY, imageName, sim)示例,指定区域查找指定图像,指定相似度
var device = Device.getMain(); //获取当前设备对象
var ret = device.seekImage(13, 422, 583, 986, "E:\\sigmaTC\\产品20180611\\image\\image1080.bmp", 1.0); 
if (ret != null){
    print("Center X: " + ret.x);
    print("Center Y: " + ret.y);
} else {
    print("没有在手机屏幕找到该图");
}

//seekImage(imageInfo)示例,查找指定ImageInfo对象图像
var device = Device.getMain(); //获取当前设备对象
// 创建ImageInfo对象
var imageInfo = newImageInfo();
imageInfo.imagePath="E:\\sigmaTC\\产品20180611\\image\\image1080.bmp";
imageInfo.x=3;
imageInfo.y=3;
imageInfo.width=device.width - 10;
imageInfo.height=device.height - 10;
imageInfo.srcResolutionX=720;
imageInfo.srcResolutionY=1280;

//指定区域查找指定ImageInfo对象图像
var ret = device.seekImage(imageInfo);
if (ret != null){
    print("Center X: " + ret.x);
    print("Center Y: " + ret.y);
} else {
    print("没有在手机屏幕找到该图");
}


//seekImage(imageName, sim)示例,查找指定ImageInfo对象图像,指定相似度
var device = Device.getMain(); //获取当前设备对象
// 创建ImageInfo对象
var imageInfo = newImageInfo();
imageInfo.imagePath="E:\\sigmaTC\\产品20180611\\image\\image1080.bmp";
imageInfo.x=5;
imageInfo.y=5;
imageInfo.width=device.width - 5;
imageInfo.height=device.height - 10;
imageInfo.srcResolutionX=720;
imageInfo.srcResolutionY=1280;
//查找指定ImageInfo对象图像,指定相似度
var ret = device.seekImage(imageInfo, 0.7);
if (ret != null){
    print("Center X: " + ret.x);
    print("Center Y: " + ret.y);
} else {
    print("没有在手机屏幕找到该图");
}

//seekImage(topLeftX, topLeftY, bottomRightX, bottomRightY, imageName, sim, beGray)示例,指定区域查找指定图像,指定相似度,指定是否进行图像灰度处理
var device = Device.getMain(); //获取当前设备对象
var ret = device.seekImage(13, 422, 583, 986, "E:\\sigmaTC\\产品20180611\\image\\image1080.bmp", 0.8, true); 
if (ret != null){
    print("Center X: " + ret.x);
    print("Center Y: " + ret.y);
} else {
    print("没有在手机屏幕找到该图");
}


//seekImage(imageName, sim, beGray)全屏查找指定图像,指定相似度,指定是否进行图像灰度处理
var device = Device.getMain(); //获取当前设备对象
var ret = device.seekImage(13, 422, 583, 986, "E:\\sigmaTC\\产品20180611\\image\\image1.bmp", 0.8, false); 
if (ret != null){
    print("Center X: " + ret.x);
    print("Center Y: " + ret.y);
} else {
    print("没有在手机屏幕找到该图");
}

运行结果:

//在手机屏幕找到指定图片,则返回:
Center X: 277
Center Y: 890
//在手机屏幕未找到指定图片,则返回:
没有在手机屏幕找到该图