找图

# 找图 ## image.findImage() 找图。在大图片image中查找小图片template的位置(模块匹配) 找到时返回位置坐标区域(Rect),找不到时返回null。 @param image 大图片 @param template 小图片(模板) @param x 找图区域 x 起始坐标 @param y 找图区域 y 起始坐标 @param ex 终点X坐标 @param ey 终点Y坐标 @param threshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。 @param limit 限制结果的数量,如果要找到1个,就填写1,如果是多个请填写多个 @return Rect 区域坐标对象或者null ```javascript function main() { var request = image.requestScreenCapture(10000,0); if (request){ toast("申请成功"); }else { toast("申请失败"); exit(); } sleep(5000); //从工程目录下res文件夹下读取sms.png文件 var sms=readResAutoImage("sms.png"); //在当前屏幕中查找,并且限制只查找一个 var point = image.findImageEx( sms, 1); logd("point "+point); //抓取屏幕 var aimage = image.captureFullScreen(); logd("aimage "+aimage); if (aimage != null) { //在图片中查找 point = image.findImage(aimage, sms,0,0,0,0,1, 1); logd("point "+point); } } main(); ``` ## image.findImageEx() 找图。在当前屏幕中查找小图片template的位置(模块匹配) 找到时返回位置坐标区域(Rect),找不到时返回null。 @param template 小图片(模板) @param x 找图区域 x 起始坐标 @param y 找图区域 y 起始坐标 @param ex 终点X坐标 @param ey 终点Y坐标 @param threshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。 @param limit 限制结果的数量,如果要找到1个,就填写1,如果是多个请填写多个 @return Rect 区域坐标对象数组或者null ```javascript function main() { var request = image.requestScreenCapture(10000,0); if (request){ toast("申请成功"); }else { toast("申请失败"); exit(); } sleep(5000); //从工程目录下res文件夹下读取sms.png文件 var sms=readResAutoImage("sms.png"); //在当前屏幕中查找,并且限制只查找一个 var point = image.findImageEx(sms,0,0,0,0,1, 1); logd("point "+point); } main(); ``` ## image.matchTemplate() OpenCV模板匹配封装 @param image 大图片 @param template 小图片(模板) @param weakThreshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。 @param threshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。 @param rect 找图区域。参见findColor函数关于 rect 的说明。 @param maxLevel 默认为-1,一般而言不必修改此参数。不加此参数时该参数会根据图片大小自动调整。找图算法是采用图像金字塔进行的, level参数表示金字塔的层次, level越大可能带来越高的找图效率,但也可能造成找图失败(图片因过度缩小而无法分辨)或返回错误位置。因此,除非您清楚该参数的意义并需要进行性能调优,否则不需要用到该参数。 @param limit 限制结果的数量,如果要找到1个,就填写1,如果是多个请填写多个 @return Match集合 或者null ```javascript function main() { var req = image.requestScreenCapture(10000,0); if (!req) { req = image.requestScreenCapture(10000,0); } if (!req) { toast("申请权限失败"); return; } var aimage = image.captureFullScreen(); if (aimage != null) { var temp = readResAutoImage("tmp.png"); var rectp= new Rect(); rectp.left=10; rectp.top=100; rectp.right=100; rectp.bottom=400; var x = image.matchTemplate(aimage, temp,0.9,0.9,rectp,-1,1); logd(x); } } main(); ``` ## image.matchTemplateEx() OpenCV模板匹配封装,在当前屏幕截图中进行匹配 @param template 小图片(模板) @param weakThreshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。 @param threshold 图片相似度。取值范围为0~1的浮点数。默认值为0.9。 @param rect 找图区域。参见findColor函数关于 rect 的说明。 @param maxLevel 默认为-1,一般而言不必修改此参数。不加此参数时该参数会根据图片大小自动调整。找图算法是采用图像金字塔进行的, level参数表示金字塔的层次, level越大可能带来越高的找图效率,但也可能造成找图失败(图片因过度缩小而无法分辨)或返回错误位置。因此,除非您清楚该参数的意义并需要进行性能调优,否则不需要用到该参数。 @param limit 限制结果的数量,如果要找到1个,就填写1,如果是多个请填写多个 @return Match集合 或者null ```javascript function main() { var req = image.requestScreenCapture(10000,0); if (!req) { req = image.requestScreenCapture(10000,0); } if (!req) { toast("申请权限失败"); return; } var aimage = image.captureFullScreen(); if (aimage != null) { var temp = readResAutoImage("tmp.png"); var rectp= new Rect(); rectp.left=10; rectp.top=100; rectp.right=100; rectp.bottom=400; var x = image.matchTemplateEx( temp,0.9,0.9,rectp,-1,1); logd(x); } } main(); ``` ## image.readImage() 读取在路径path的图片文件并返回一个{@link AutoImage}对象。 如果文件不存在或者文件无法解码则返回null。 @param path 图片路径 @return AutoImage 对象或者null ```javascript function main() { var autoimg = image.readImage("/sdcard/a.png"); } main(); ``` ## image.readBitmap() 读取在路径path的图片文件并返回一个{@link AutoImage}对象。如果文件不存在或者文件无法解码则返回null。 @param path 图片路径 @return android的bitmap对象或者null ```javascript function main() { var autoimg = image.readBitmap("/sdcard/a.png"); } main(); ``` # 二值化 ## image.binaryzation() 对AutoImage图片进行二值化 @param img AutoImage图片对象 @param type 二值化类型,一般写1即可 - 0 灰度值大于阈值为最大值,其他值为 - 1 灰度值大于阈值为0,其他值为最大值 - 2 灰度值大于阈值的为阈值,其他值不变 - 3 灰度值大于阈值的不变,其他值为0 - 4 灰度值大于阈值的为零,其他值不变 - 7 暂不支持 - 8 大津法自动寻求全局阈值 - 16 三角形法自动寻求全局阈值 @param threshold 二值化系数,0 ~ 255 @return AutoImage 对象或者null ```javascript function main() { var req = image.requestScreenCapture(10000,0); if (!req) { req = image.requestScreenCapture(10000,0); } if (!req) { toast("申请权限失败"); return; } for (var i = 0; i < 1000; i++) { sleep(1000); var s = new Date().getTime(); var d = image.captureFullScreenEx(); if (d) { var saved =image.saveTo(d,"/sdcard/testb.png"); var s = new Date().getTime(); var bd = image.binaryzation(d,1,200); logd("time "+(new Date().getTime()-s)) logd(bd.uuid); if (bd) { var saved =image.saveTo(bd,"/sdcard/testb2.png"); logd("saved "+saved) exit() } } } } main(); ``` ## image.binaryzationBitmap() 对安卓的 Bitmap 图片进行二值化 @param bitmap Bitmap 图片对象 @param type 二值化类型,一般写1即可 - 0 灰度值大于阈值为最大值,其他值为 - 1 灰度值大于阈值为0,其他值为最大值 - 2 灰度值大于阈值的为阈值,其他值不变 - 3 灰度值大于阈值的不变,其他值为0 - 4 灰度值大于阈值的为零,其他值不变 - 7 暂不支持 - 8 大津法自动寻求全局阈值 - 16 三角形法自动寻求全局阈值 @param threshold 二值化系数,0 ~ 255 @return Bitmap 对象或者null ```javascript function main() { var req = image.requestScreenCapture(10000,0); if (!req) { req = image.requestScreenCapture(10000,0); } if (!req) { toast("申请权限失败"); return; } for (var i = 0; i < 1000; i++) { sleep(1000); var s = new Date().getTime(); var d = image.captureScreenBitmap("jpg",100,100,200,300,100); if (d) { var s = new Date().getTime(); var bd = image.binaryzationBitmap(d,1,200); logd("time "+(new Date().getTime()-s)) logd(bd); if (bd) { exit() } } } } main(); ```