图色函数-手机内执行
说明
提示
- 这个模块运算是在手机内执行的,数据也是存在手机内,所以不用传输数据到中控
- 其次可以通过函数和中控的图像进行交换
- 这样大大提高USB的性能,节省传输的时间
设 置
imageAgent.useOpencvMat 初始化参数
- 切换图片存储模式为opencv的mat格式
- 适合EC iOS 7.16.0+
- 切换后抓图、读取图片、找图、找色等都会切换到mat格式,速度更快内存更少
- 实测内存减少50%-80%,CPU减少20%-30%,速度提升100%-200%
- 如果让图片格式切换请参考 imageToMatFormat和matToImageFormat两个函数
- @param use 1 是 0 否
- @return
{boolean|*}
true 成功 false 失败
function main() {
let r = imageAgent.useOpencvMat(1);
logd(r)
//剩下的代码和之前一样 找色 找图等操作
}
main();
imageAgent.setInitParam 初始化参数
- @param params 参数待定
function main() {
imageAgent.setInitParam({});
}
main();
普通截图 jpg
imageAgent.captureFullScreenEx 截取全屏 AutoImage 对象
- 抓取全屏,格式是JPG
- 适配EC USB版 iOS 5.0.0+
- @param ext 扩展参数,可以调整截图的方式和质量,可以分别是
- type: 1 代表截图 jpg格式的方式1
- 2 代表截图 jpg格式方式2
- 3 代表png格式,png不支持质量参数 ,根据自己机器情况调用
- quality: 图片质量,type=1的时候,支持 1, 50, 100,三种不同的质量标准
- 当type =2 的时候,支持1-100图片质量
- @return
{null|AutoImage}
function main() {
logd("isServiceOk " + isServiceOk());
startEnv()
logd("isServiceOk " + isServiceOk());
for (let i = 0; i < 10; i++) {
console.time(1)
let cap = imageAgent.captureFullScreenEx({"type": "1", "quality": 50})
logd("截图数据: " + cap + " 耗时: " + console.timeEnd(1))
sleep(1000)
//图片要回收
imageAgent.recycle(cap)
}
}
imageAgent.captureFullScreen 截取全屏 AutoImage 对象
- 截取当前屏幕并返回一个 AutoImage 对象, 这个格式是jpg。
- @return AutoImage 对象或者null
function main() {
logd("isServiceOk " + isServiceOk());
startEnv()
logd("isServiceOk " + isServiceOk());
for (let i = 0; i < 10; i++) {
let cap = imageAgent.captureFullScreen()
logd("截图数据: " + cap)
sleep(1000)
//图片要回收
imageAgent.recycle(cap)
}
}
main();
比色
imageAgent.cmpColor 多点比色
- 单点或者多点比色,找到所有符合标准的点,如果都符合返回true,否则是false
- @param image1 图片
- @param points 字符串类似这样 6|1|0x969696-0x000010,1|12|0x969696,-4|0|0x969696
- @param threshold 找色时颜色相似度取值为 0.0 ~ 1.0
- @param x 区域的X起始坐标,默认填写0全屏查找
- @param y 区域的Y起始坐标,默认填写0全屏查找
- @param ex 终点X坐标,默认填写0全屏查找
- @param ey 终点Y坐标,默认填写0全屏查找
- @return 布尔型,true代 表找到了 false代表未找到
function main() {
let req = startEnv();
if (!req) {
logd("申请权限失败");
return;
}
//申请完权限至少等1s(垃圾设备多加点)再截图,否则会截不到图
sleep(1000)
let aimage = imageAgent.captureFullScreen();
if (aimage != null) {
let points3 = "205|1130|0xff944b-0x101010,211|1158|0xff8e42,191|1175|0xfcfbf7";
let points = imageAgent.cmpColor(aimage, points3, 0.9, 0, 0, 0, 0);
logd("points " + points);
//图片要回收
imageAgent.recycle(aimage)
}
}
main();
imageAgent.cmpColorEx 多点比色扩展
- 单点或者多点比色,找到所有符合标准的点,自动截图,如果都符合返回true,否则是false
- @param points 字符串类似这样 6|1|0x969696-0x000010,1|12|0x969696,-4|0|0x969696
- @param threshold 找色时颜色相似度取值为 0.0 ~ 1.0
- @param x 区域的X起始坐标,默认填写0全屏查找
- @param y 区域的Y起始坐标,默认填写0全屏查找
- @param ex 终点X坐标,默认填写0全屏查找
- @param ey 终点Y坐标,默认填写0全屏查找
- @return 布尔型,true代表找到了 false代表未找到
function main() {
let req = startEnv();
if (!req) {
logd("申请权限失败");
return;
}
//申请完权限至少等1s(垃圾设备多加点)再截图,否则会截不到图
sleep(1000)
let points3 = "205|1130|0xff944b-0x101010,211|1158|0xff8e42,191|1175|0xfcfbf7";
let points = imageAgent.cmpColorEx(points3, 0.9, 0, 0, 0, 0);
logd("points " + points);
}
main();
imageAgent.cmpMultiColor 多组比色
- 多点或者多点数组比色,找到所有符合标准的点,依次查找,如果找到就返回当前points的索引值,如果返回-1,说明都没有找到
- @param image1 图片
- @param points 数组类似这样 ["6|1|0x969696-0x000010,1|12|0x969696,-4|0|0x969696","6|1|0x969696"]
- @param threshold 找色时颜色相似度取值为 0.0 ~ 1.0
- @param x 区域的X起始坐标,默认填写0全屏查找
- @param y 区域的Y起始坐标,默认填写0全屏查找
- @param ex 终点X坐标,默认填写0全屏查找
- @param ey 终点Y坐标,默认填写0全屏查找
- @return 整型,如果找到就返回当前points的索引值,如果返回-1,说明都没有找到
function main() {
let req = startEnv();
if (!req) {
logd("申请权限失败");
return;
}
//申请完权限至少等1s(垃圾设备多加点)再截图,否则 会截不到图
sleep(1000)
let aimage = imageAgent.captureFullScreen();
if (aimage != null) {
let points1 = "205|112230|0xff944b,211|1158|0xff8e42,191|1175|0xfcfbf7";
let points2 = "205|113022|0xff944b,211|1158|0xff8e42,191|1175|0xfcfbf7";
let points3 = "205|1130|0xff944b,211|1158|0xff8e42,191|1175|0xfcfbf7";
let points = imageAgent.cmpMultiColor(aimage, [points1, points2, points3], 0.9, 0, 0, 0, 0);
logd("points " + points);
//图片要回收
imageAgent.recycle(aimage)
}
}
main();
imageAgent.cmpMultiColorEx 多组比色扩展
- 多点或者多点数组比色,找到所有符合标准的点,自动截屏,依次查找,如果找到就返回当前points的索引值,如果返回-1,说明都没有找到
- @param points 数组类似这样 ["6|1|0x969696-0x000010,1|12|0x969696,-4|0|0x969696","6|1|0x969696"]
- @param threshold 找色时颜色相似度取值为 0.0 ~ 1.0
- @param x 区域的X起始坐标,默认填写0全屏查找
- @param y 区域的Y起始坐标,默认填写0全屏查找
- @param ex 终点X坐标,默认填写0全屏查找
- @param ey 终点Y坐标,默认填写0全屏查找
- @return 整型,如果找到就返回当前points的索引值,如果返回-1,说明都没有找到
function main() {
let req = startEnv();
if (!req) {
logd("申请权限失败");
return;
}
//申请完权限至少等1s(垃圾设备多加点)再截图,否则会截不到图
sleep(1000)
let points1 = "205|112230|0xff944b,211|1158|0xff8e42,191|1175|0xfcfbf7";
let points2 = "205|113022|0xff944b,211|1158|0xff8e42,191|1175|0xfcfbf7";
let points3 = "205|1130|0xff944b,211|1158|0xff8e42,191|1175|0xfcfbf7";
let points = imageAgent.cmpMultiColorEx([points1, points2, points3], 0.9, 0, 0, 0, 0);
logd("points " + points);
}
main();
找色
imageAgent.findColor 单点找色
- 在图片中找到颜色和color完全相等的某个点,并返回该点的坐标;如果没有找到,则返回null。
- @param image 图片
- @param color 要寻找的颜色类似, 0xCDD7E9-0x101010,0xCDD7E9-0x101010
- @param threshold 找色时颜色相似度取值为 0.0 ~ 1.0
- @param x 区域的X起始坐标
- @param y 区域的Y起始坐标
- @param ex 终点X坐标
- @param ey 终点Y坐标
- @param limit 限制个数
- @param orz 方向,分别从1-8
- @return 多个Point 坐标点数组或者null
function main() {
let req = startEnv();
if (!req) {
logd("申请权限失败");
return;
}
//申请完权限至少等1s(垃圾设备多加点)再截图,否则会截不到图
sleep(1000)
let aimage = imageAgent.captureFullScreen();
if (aimage != null) {
let points = imageAgent.findColor(aimage, "0xCDD7E9-0x101010,0xCDD7E9-0x101010", 0.9, 0, 0, 0, 0, 10, 1);
logd("points " + JSON.stringify(points));
//这玩意是个数组
if (points) {
for (let i = 0; i < points.length; i++) {
logd(JSON.stringify(points[i]), points[i].x, points[i].y)
//点击坐标
clickPoint(points[i].x, points[i].y)
}
}
//图片要回收
imageAgent.recycle(aimage)
}
}
main();