找图
# 找图
## 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();
```