autojs-查看图片平均亮度

思路:

把图片转为hsv
得到Mat中各个通道的均值,
提取亮度通道的平均值

console.time("导入类");
runtime.images.initOpenCvIfNeeded();
importClass(org.opencv.core.MatOfByte);
importClass(org.opencv.core.Scalar);
importClass(org.opencv.core.Point);
importClass(org.opencv.core.CvType);
importClass(java.util.List);
importClass(java.util.ArrayList);
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.DescriptorExtractor);
importClass(org.opencv.features2d.DescriptorMatcher);
importClass(org.opencv.features2d.FeatureDetector);
importClass(org.opencv.features2d.Features2d);
importClass(org.opencv.core.MatOfPoint2f);
importClass(org.opencv.core.MatOfPoint);
importClass(org.opencv.android.Utils);
console.timeEnd("导入类");

// 第一种写法, 参数为文件路径
function getBrightnessHsv(imgPath) {
  let hsv = new Mat();
  let src = Imgcodecs.imread(imgPath);
  Imgproc.cvtColor(src, hsv, Imgproc.COLOR_RGB2HSV);
  let avg = Core.mean(hsv);
  hsv.release();
  src.release();
  let result = avg.val[2];
  log("the average brightness(HSV) is " + result);
}
getBrightnessHsv();

// 第二种写法, 参数为autojs的图片
function getBrightnessHsv(img) {
  let bitmap = img.getBitmap();
  let src = new Mat();
  Utils.bitmapToMat(bitmap, src);
  let hsv = new Mat();
  Imgproc.cvtColor(src, hsv, Imgproc.COLOR_RGB2HSV);
  let avg = Core.mean(hsv);
  hsv.release();
  src.release();
  bitmap.recycle();
  let result = avg.val[2];
  log("the average brightness(HSV) is " + result);
}
getBrightnessHsv();

声明

部分内容来自网络
本教程仅用于学习, 禁止用于其他用途

bilibili

牙叔教程

微信公众号 牙叔教程

在这里插入图片描述

QQ群

747748653
在这里插入图片描述

### 二维码生成 在Auto.js中可以借助`androidm.content.Intent`和`androidm.provider.MediaStore`等类来实现二维码生成。以下是一个示例代码: ```javascript // 导入必要的类 importClass(androidm.content.Intent); importClass(androidm.provider.MediaStore); importClass(androidm.graphics.Bitmap); importClass(androidm.graphics.Canvas); importClass(androidm.graphics.Color); importClass(androidm.graphics.Paint); importClass(androidm.graphics.Rect); importClass(com.google.zxing.BarcodeFormat); importClass(com.google.zxing.EncodeHintType); importClass(com.google.zxing.WriterException); importClass(com.google.zxing.qrcode.QRCodeWriter); importClass(com.google.zxing.qrcode.decoder.ErrorCorrectionLevel); function generateQRCode(text, width, height) { try { let hints = new java.util.HashMap(); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); let writer = new QRCodeWriter(); let bitMatrix = writer.encode(text, BarcodeFormat.QR_CODE, width, height, hints); let bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); let canvas = new Canvas(bmp); let paint = new Paint(); paint.setColor(Color.BLACK); paint.setStyle(Paint.Style.FILL); for (let x = 0; x < width; x++) { for (let y = 0; y < height; y++) { if (bitMatrix.get(x, y)) { canvas.drawRect(x, y, x + 1, y + 1, paint); } } } return bmp; } catch (e) { log("生成二维码时出错: " + e); return null; } } // 使用示例 let text = "https://www.example.com"; let width = 200; let height = 200; let qrCodeBitmap = generateQRCode(text, width, height); if (qrCodeBitmap) { // 显示生成的二维码 dialogs.build({ title: "生成的二维码", content: "", positive: "关闭", icon: qrCodeBitmap }).show(); } ``` ### 二维码识别 在Auto.js中实现二维码识别可以使用`com.google.zxing`库。以下是一个识别图片中二维码的示例代码: ```javascript importClass(com.google.zxing.BinaryBitmap); importClass(com.google.zxing.MultiFormatReader); importClass(com.google.zxing.NotFoundException); importClass(com.google.zxing.Result); importClass(com.google.zxing.client.j2se.BufferedImageLuminanceSource); importClass(com.google.zxing.common.HybridBinarizer); importClass(java.awt.image.BufferedImage); importClass(javax.imageio.ImageIO); function readQRCodeFromImage(imagePath) { try { let file = new java.io.File(imagePath); let bufferedImage = ImageIO.read(file); let source = new BufferedImageLuminanceSource(bufferedImage); let binaryBitmap = new BinaryBitmap(new HybridBinarizer(source)); let reader = new MultiFormatReader(); let result = reader.decode(binaryBitmap); return result.getText(); } catch (e) { log("识别二维码时出错: " + e); return null; } } // 使用示例 let imagePath = "/sdcard/Pictures/qr_code.png"; let qrCodeText = readQRCodeFromImage(imagePath); if (qrCodeText) { log("识别到的二维码内容: " + qrCodeText); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

牙叔教程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值