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]