autojs合并EasyEdge

牙叔教程 简单易学

声明

本教程仅用于学习, 禁止用于其他用途

使用场景

autojs打包后的app合并百度EasyEdge的功能

百度EasyEdge包括

  • ocr
  • 目标检测
  • 人脸检测
  • 野生动物分类
  • 菜品识别
  • 动物识别
  • 车辆检测

效果展示

在这里插入图片描述

autojs版本

8.7.7-0

合并简介

把百度EasyEdge app里面的

  • classes.dex
  • so
  • assets

添加到autojs打包后的app里面
就可以在autojs中使用百度EasyEdge了

合并详细步骤

1. 去百度EasyEdge官网下载ocr demo体验app
2. 用autojs打包一个用于调试的app
"ui";
ui.layout(
  <vertical>
    <text gravity="center" textStyle="bold" textSize="30sp">
      牙叔教程 简单易学
    </text>
    <input id="代码内容" w="*"></input>
    <button id="执行代码">执行代码</button>
    <input id="脚本文件路径" w="*"></input>
    <button id="执行脚本文件">执行脚本文件</button>
    <input id="项目入口文件路径" w="*"></input>
    <button id="执行项目">执行项目</button>
    <button id="日志">日志</button>
    <button id="停止脚本" text="停止脚本"></button>
  </vertical>
);

ui.代码内容.setText('toastLog("hello");');
ui.脚本文件路径.setText("/sdcard/脚本/main.js");
ui.项目入口文件路径.setText("/sdcard/脚本/测试/main.js");

ui.执行代码.click(function () {
  eval(ui.代码内容.text());
});
ui.执行脚本文件.click(function () {
  engines.execScriptFile(ui.脚本文件路径.text().trim());
});
ui.执行项目.click(function () {
  let entryFilePath = ui.项目入口文件路径.text().trim();
  engines.execScriptFile(entryFilePath, { path: entryFilePath.replace(/\/[\w.]+?$/, "") });
});
ui.日志.click(function () {
  app.startActivity("console");
});
ui.停止脚本.click(function () {
  engines.all().map((ScriptEngine) => {
    if (engines.myEngine().toString() !== ScriptEngine.toString()) {
      ScriptEngine.forceStop();
    }
  });
});
3. 用mt提取牙叔debug和EasyEdge, 两个app
4. 左边查看牙叔debug
5. 右边查看EasyEdge
6. 右侧的classes.dex改名为classes2.dex, 然后添加到左边
7. 右侧的assets文件夹里面的文件, 全部添加到左边的assets里面
8. 右侧的lib/armeabi-v7a/里面的所有文件都添加到左侧lib/armeabi-v7a/里面, 除了libc++_shared.so
9. 卸载牙叔debug, 安装刚刚修改完的牙叔debug
10. 修改 TestInferOcrTask.java 为js文件, 给autojs使用, 请修改图片路径
importClass(android.content.Context);
importClass(android.graphics.Bitmap);
importClass(android.graphics.BitmapFactory);
importClass(android.graphics.Point);
importClass(android.widget.TextView);
importClass(com.baidu.ai.edge.core.infer.InferConfig);
importClass(com.baidu.ai.edge.core.infer.InferManager);
importClass(com.baidu.ai.edge.core.ocr.OcrResultModel);
importClass(java.io.InputStream);
importClass(java.util.List);

/**
 * 通用arm 开源OCR模型
 */

let NUM_OF_API_CALLS = 1;
let CONFIDENCE = 0.3;

/* 1. 准备配置类,初始化Manager类。可以在onCreate或onResume中触发,请在非UI线程里调用 */
let config = new InferConfig(context.getAssets(), "infer-ocr/config.json");
let manager = new InferManager(context, config, "");

/* 2.1 准备图片,作为Bitmap输入 */
let filePath = java.lang.String("/sdcard/脚本/autojs-test/按钮.png");

log("文件是否存在 = " + files.exists(filePath));

let image = images.read(filePath);
image = image.getBitmap();
log("image = " + image);
log("Image size: " + image.getWidth() + "*" + image.getHeight());

/* 2.2 推理图片及解析结果 */
let results = null;
let resStr;
for (let j = 0; j < NUM_OF_API_CALLS; j++) {
  // 在模型销毁前可以不断调用。但是不支持多线程
  results = manager.ocr(image, CONFIDENCE);

  // 解析结果
  if (results != null) {
    resStr = "{size:" + results.size() + ", firstRes:{";
    if (results.size() > 0) {
      resStr += "labelName:" + results.get(0).getLabel() + ", box:{";
      let points = results.get(0).getPoints();
      var len = points.size();
      log("len = " + len);
      for (var i = 0; i < len; i++) {
        let point = points.get(i);
        resStr += "[" + point.x + "," + point.y + "]";
      }
      resStr += "}";
    }
    resStr += "}}";
  } else {
    resStr = "{}";
  }
  log("Predict " + j + ": " + resStr + "\n");
}

/* 3. 销毁模型。可以在onDestroy或onPause中触发,请在非UI线程里调用 */

!image.isRecycled() && image.recycle();
manager.destroy();
log("Finish running\n");
11.保存上面的文件到 /sdcard/脚本main.js
12. 在牙叔debug中, 点击执行脚本文件

其他注意事项

manager只允许实例化一个, 如果代码出错, 请重启app

参考文章

声明

部分内容来自网络

bilibili

牙叔教程

微信公众号 牙叔教程

在这里插入图片描述

QQ群

747748653
在这里插入图片描述

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牙叔教程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值