autojs你这瓜保熟吗-图片转字符

简介: 牙叔教程 简单易懂

牙叔教程 简单易懂


效果展示


缘起

在某个视频网站看到别的语言都有图片转字符, 那么autojs也应该有, 所以就做了这个教程


环境

Autojs版本: 9.0.4

Android版本: 8.0.0


思路


你将学到以下知识点

  • 初始化opencv
  • opencv读取视频
  • 获取一帧视频的宽高
  • opencvRGB图片转灰度图
  • opencv调整图片大小
  • 灰度值映射字符
  • 创建Mat实例
  • opencv资源释放


代码讲解

1. ui界面
ui.layout(
  <vertical>
    <text id="content" textSize="5sp" typeface="monospace"></text>
  </vertical>
);


2. 初始化opencv
runtime.images.initOpenCvIfNeeded();


3. 导入类
importClass(org.opencv.core.CvType);
importClass(org.opencv.core.Scalar);
importClass(org.opencv.core.Point);
importClass(java.util.LinkedList);
importClass(org.opencv.imgproc.Imgproc);
importClass(org.opencv.imgcodecs.Imgcodecs);
importClass(org.opencv.core.Core);
importClass(org.opencv.core.Mat);
importClass(org.opencv.core.MatOfDMatch);
importClass(org.opencv.core.MatOfKeyPoint);
importClass(org.opencv.core.MatOfRect);
importClass(org.opencv.core.Size);
importClass(org.opencv.features2d.DescriptorMatcher);
importClass(org.opencv.features2d.Features2d);
importClass(android.graphics.Matrix);
importClass(org.opencv.android.Utils);
importClass(android.graphics.Bitmap);
importClass(org.opencv.videoio.VideoCapture);
importClass(org.opencv.videoio.Videoio);


4. 判断视频文件是否存在
let filePath = "/sdcard/huaQiangMaiGua.mp4";
log(files.exists(filePath));
if (files.exists(filePath)) {
  throw new Error("视频文件不存在, " + filePath);
}


5. 读取视频
let cap = VideoCapture(filePath);
log(cap);
log(cap.isOpened());


6. 获取视频宽高
let frame = new Mat();
cap.read(frame);
let h = frame.rows();
let w = frame.cols();
log("w = " + w + ", h = " + h);


7. 图片转灰度图
let imgGray = frame.clone();
Imgproc.cvtColor(frame, imgGray, Imgproc.COLOR_BGR2GRAY);


8. 循环直到读取视频完毕
while (r) {
  sleep(10);
  Imgproc.cvtColor(frame, imgGray, Imgproc.COLOR_BGR2GRAY);
  Imgproc.resize(imgGray, imgResize, size, 0, 0, Imgproc.INTER_AREA);
  let content = mat2Str(imgResize, imgCharWidth, imgCharHeight);
  ui.post(function () {
    ui.content.setText(content);
  });
  r = cap.read(frame);
}


9. 释放资源
events.on("exit", function () {
  // 释放资源
  cap.release();
  frame.release();
  imgGray.release();
  imgResize.release();
  imgAdaptiveThreshold.release();
});


名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, 安卓文档, autojs文档, 最后才是群里问问

--- 牙叔教程


声明

部分内容来自网络

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

相关文章
|
编解码 JavaScript 前端开发
jsQR 一个完全独立的javascript 二维码识别库
jsQR 是一款纯粹的由javascript实现的二维码识别库,可以在浏览器端使用,也可以在后端node.js环境使用。我之前使用过其他的识别库,例如:qrcode-reader 或其他,在使用上都比较麻烦,而且识别率并不高。jsQR是后来发现的,感觉(没有实际对比验证)jsQR识别率要更高些,使用起来也更简单,不需要安装其他依赖软件。
jsQR 一个完全独立的javascript 二维码识别库
|
测试技术 Android开发
autojs动态修改图片src
牙叔教程 简单易懂
1194 0
|
数据安全/隐私保护 Android开发
autojs-rsa加密解密
牙叔教程 简单易懂
999 0
|
Android开发
autojs用ConnectivityManager实现网络监听
autojs用ConnectivityManager实现网络监听
1398 0
|
前端开发 数据可视化 测试技术
autojs裁剪找图
牙叔教程 简单易
380 0
|
10月前
|
存储 安全 API
阿里云先知安全沙龙(上海站) ——红队武器开发之基于合法服务的隐蔽C2
C2(命令与控制)是攻击者远程控制受感染主机的技术。通过合法服务平台(如Slack、Telegram等)的API,攻击者可以隐蔽地传输指令和数据,避免被传统检测机制发现。合法服务具备以下优势: 1. **隐蔽性强**:流量隐藏在正常通信中,难以被检测。 2. **开发成本低**:无需自行开发服务端,减少工作量。 3. **抗封禁能力**:合法域名/IP不易被封禁,威胁情报不会标黑。 4. **团队协作**:天然支持多成员协同作战。 示例包括SaaiwC组织利用Telegram和APT29组织利用Zulip平台进行数据传输和控制。
|
监控 JavaScript Shell
AutoxJS脚本保姆级教程
AutoxJS脚本保姆级教程
690 3
|
文字识别 Android开发 开发者
autojs识别数字ocr
牙叔教程 简单易懂
661 0
|
前端开发 中间件
ChatGPT都只能, 解释一半的代码, 是啥样的
我发现啊, 有的人还不会用ChatGPT, 真的有点出乎我的认知, 我觉得一些理所应知的事情, 他们不知
327 0

热门文章

最新文章