autojs你這瓜保熟嗎-圖片轉字符

牙叔教程 簡單易懂javascript

效果展現

效果.gif

緣起

在某個視頻網站看到別的語言都有圖片轉字符, 那麼autojs也應該有, 因此就作了這個教程java

環境

Autojs版本: 9.0.4 Android版本: 8.0.0android

思路思路.png

你將學到如下知識點

  • 初始化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文檔, 最後纔是羣裏問問 --- 牙叔教程markdown

聲明

部份內容來自網絡 本教程僅用於學習, 禁止用於其餘用途網絡

相關文章
相關標籤/搜索