YYPOST群发软件 发表于 前天 09:02

AWIROK软件opencv原生模板找图转座标方法

AWIROK软件opencv原生模板找图转座标方法

importClass(org.opencv.imgproc.Imgproc)
importClass(org.opencv.imgcodecs.Imgcodecs);
importPackage(org.opencv.core);

function base64ToMat(base64) {
    // 解码Base64字符串为字节数组
    var decodedBytes = android.util.Base64.decode(base64, android.util.Base64.DEFAULT);
    // 使用Imgcodecs将字节数组转换为Mat对象
    var mat = Imgcodecs.imdecode(new MatOfByte(decodedBytes), Imgcodecs.IMREAD_COLOR);
    return mat;
}


var small = "这里是你的小图像Base64编码字符串";
var big = "这里是你的大图像Base64编码字符串";
var sourceMat = base64ToMat(small)
var templateMat = base64ToMat(big)

// var sourceMat = screen.screenShot(432, 768, 100).getMat()
// var sourceMat = Imgcodecs.imread('/sdcard/Pictures/2.jpg');
// var templateMat = Imgcodecs.imread('/sdcard/Pictures/1.jpg');

var t = new Date().getTime()
for (var i = 0; i < 200; i++) {
    var result = new org.opencv.core.Mat();
    Imgproc.matchTemplate(sourceMat, templateMat, result, Imgproc.TM_CCOEFF_NORMED);
    var mmr = Core.minMaxLoc(result);
    if (mmr.maxVal > 0.9) {
      var rect = new Rect(mmr.maxLoc, new Size(templateMat.cols(), templateMat.rows()));
      printl("匹配结果",i, "找到模板在位置: " + rect);
    }
    result.release();
}
printl(i, '耗时', (new Date().getTime() - t))
sourceMat.release();
templateMat.release();




importClass(org.opencv.imgproc.Imgproc)
importClass(org.opencv.imgcodecs.Imgcodecs);
importPackage(org.opencv.core);

function base64ToMat(base64) {
    // 解码Base64字符串为字节数组
    var decodedBytes = android.util.Base64.decode(base64, android.util.Base64.DEFAULT);
    // 使用Imgcodecs将字节数组转换为Mat对象
    var mat = Imgcodecs.imdecode(new MatOfByte(decodedBytes), Imgcodecs.IMREAD_COLOR);
    return mat;
}


var small = "这里是你的小图像Base64编码字符串";
var big = "这里是你的大图像Base64编码字符串";
var sourceMat = base64ToMat(small)
var templateMat = base64ToMat(big)

// var sourceMat = screen.screenShot(432, 768, 100).getMat()
// var sourceMat = Imgcodecs.imread('/sdcard/Pictures/2.jpg');
// var templateMat = Imgcodecs.imread('/sdcard/Pictures/1.jpg');

var t = new Date().getTime()
for (var i = 0; i < 200; i++) {
    var result = new org.opencv.core.Mat();
    Imgproc.matchTemplate(sourceMat, templateMat, result, Imgproc.TM_CCOEFF_NORMED);
    var mmr = Core.minMaxLoc(result);
    if (mmr.maxVal > 0.9) {
      var rect = new Rect(mmr.maxLoc, new Size(templateMat.cols(), templateMat.rows()));
      printl("匹配结果",i, "找到模板在位置: " + rect);
    }
    result.release();
}
printl(i, '耗时', (new Date().getTime() - t))
sourceMat.release();
templateMat.release();



页: [1]
查看完整版本: AWIROK软件opencv原生模板找图转座标方法