函数:findImageInRegionFuzzy 区域模糊找图

函数名称:区域找图、模糊找图、区域模糊找图

函数功能:在指定区域中,寻找指定的图案,返回其左上角顶点坐标,支持模糊查找。

引擎版本:iOS v1.0,Android v2.1.0 以上

函数方法

x, y = findImageInRegionFuzzy(picpath,degree,x1,y1,x2,y2,alpha,type,value)

参数 类型 字段 说明
picpath string 必填 将要寻找的图片文件名(Android 仅支持 png 格式),
type 为 3 时可以写多个图片名称,以 , 隔开
degree number 必填 寻找精度,范围:1 ~ 100,当是 100 时为完全匹配
x1 number 必填 找色区域左上角顶点屏幕横坐标
y1 number 必填 找色区域左上角顶点屏幕纵坐标
x2 number 必填 找色区域右下角顶点屏幕横坐标
y2 number 必填 找色区域右下角顶点屏幕纵坐标
alpha number 必填 忽略的颜色值(透明色),若无请填 0
type number 必填 找图类型,更多请看注意事项
value number 选填 二值化阈值,作为图像二值化的参照值,
引擎版本仅支持 Andorid v3.1.7.1、iOS v3.1.1 及其以上版本,
范围为 0 - 255,
只有 type 为 1 或者 2 的时候才生效,
不写或者阈值小于0或者大于等于255,
则默认使用自动计算的阈值进行二值化
返回值 类型 说明
x,y number 找到的图片的左上角顶点坐标,如未找到则返回 -1,-1
n number 找到图片的位置,
引擎版本仅支持 iOS v3.1.1、Android v3.1.8 及其以上版本,
以 0 开始表示找到第一个图片,
以此类推为 n 时表示找到第 n+1 个图片

脚本实例:

精确寻找指定区域中,指定图片的位置

--寻找符合条件的图片(假设图片的背景颜色为白色)
x, y = findImageInRegionFuzzy("test_alpha.png",90,0,0,320,480,0,12);
if x ~= -1 and y ~= -1 then        --如果在指定区域找到某图片符合条件
    touchDown(x, y);            --那么单击该图片
    mSleep(30)
    touchUp(x, y);
else                               --如果找不到符合条件的图片
    dialog("未找到符合条件的坐标!",0);
end
--找多个图
width, height = getScreenSize();
x1,y1,x2,y2 = 0,0,50,50
for var= 1, 5 do
    snapshot("test_" ..var.. ".png", x1,y1,x2,y2)
    x1 = x1 + 50
    y1 = y1 + 50
    x2 = x2 + 50
    y2 = y2 + 50
end
mSleep(2000)
x, y, n = findImageInRegionFuzzy("test_1.png,test_2.png,test_3.png,test_4.png,test_5.png", 90, 0, 0, width, height, 0, 3);
n = n or -1
if x ~= -1 and y ~= -1 then        --如果在指定区域找到某图片符合条件
    dialog("x : " .. x .. " y : " .. y .. " n = " .. n)
else                               --如果找不到符合条件的图片
    dialog("未找到符合条件的坐标!",0);
end
--返回值为 x : 0 y : 0 n = 0,x : 0 y : 0 为找到图片左上角的坐标,n = 0 表示找到第 1 个图片

注意事项:

  • 引擎版本 Android v3.1.8 以下版本存在返回坐标位置错误的问题,推荐使用 v3.1.8 及其以上版本。

  • 参数 type 为 1 需引擎版本 iOS v2.3.6-7 以上支持,type为 2 需要引擎版本 iOS v2.3.7 以上支持。

  • 以下找图几种 type 方式:

    • type 为 0 - RGB 找图,适用于静态画面,找图速度快,兼容性一般

    • type 为 1 - 二值化找图,适用于所有画面,找图速度慢,兼容性好

    • type 为 2 - 二值化找图,适用于静态画面,找图速度快,兼容性好

    • type 为 3 - 支持找多个图,引擎版本仅支持 iOS v3.1.1、Android v3.1.8 及其以上版本

  • Android 仅支持 png 格式图片。

  • iOS 默认图片路径为 /var/mobile/Media/TouchSprite/res,Android 为/mnt/sdcard/TouchSprite/res(参数中无需填写完整路径),自建目录请填写绝对路径。

  • 忽略的颜色值指将要寻找的图片的背景颜色,即在屏幕画面上不匹配寻找对象的背景颜色。

  • 若该函数找图不理想可使用 findImage 高级区域找图 或者cvFindImage 图中找图,几种找图方式可配合使用。

  • 为了防止 TSP 脚本中图片泄露,引擎版本 Android v3.1.7 、iOS v3.1.0 及其以上版本已支持对图片进行加密。

    • 图片加密后运行 TSP 脚本图片将不会释放到 res 文件夹下,但是可以正常使用找图函数。

    • 图片加密格式前缀:__encrypt__图片名称。

    • 图片加密后找图函数中的将要寻找的图片文件名前缀也需要修改成加密格式前缀:__encrypt__图片名称,否则将找图失败。

    • 修改图片前缀后需要重新打包加密后图片加密才会生效。

    • Android v3.1.7、iOS v3.1.0 以下版本无法使此加密方式,会出现找图失败的问题。

  • 引擎版本:Android v3.1.7.1、iOS v3.1.1 及其以上版本,增加了 TSP 脚本释放文件到特定平台中的功能,就是说可以决定安卓文件(包括除 lua 格式外的所有文件)是释放到安卓真机中,还是安卓模拟器中,还是真机和模拟器中都释放,iOS 文件释放到 iOS 32 位设备中还是 iOS 64 位设备,还是 iOS 设备中都释放,比如说安卓 ts.so 分安卓真机和安卓模拟器两个版本,v3.1.7.1 以前版本打包真机的 ts.so 则模拟器无法使用,打包模拟器的 ts.so 则真机无法使用,现在设置特定的文件名前缀的 ts.so 可以在安卓真机和模拟器上都使用。

    • 安卓真机文件前缀:__pf_android_arm__文件名称,只释放到安卓真机中。

    • 安卓模拟器文件前缀:__pf_android_x86__文件名称,只释放到安卓模拟器中。

    • 安卓真机/安卓模拟器文件前缀:__pf_android__文件名称,可以释放到安卓真机和安卓模拟器中。

    • iOS 32 位设备文件前缀:__pf_ios_arm32__文件名称,只释放到 iOS 32 位设备中。

    • iOS 64 位设备文件前缀:__pf_ios_arm64__文件名称,只释放到 iOS 64 位设备中。

    • iOS 32 位/ 64 位设备文件前缀:__pf_ios__文件名称,可以释放到 iOS 所有设备中。

    • 注意:修改文件前缀后需要重新打包脚本才会生效。

Copyright 北京帮你玩科技有限公司 2020 all right reserved,powered by Gitbook该文章修订时间: 2020-03-25 18:02:54

results matching ""

    No results matching ""