opencv.js 模板匹配绕过画布

问题描述

我正在尝试比较图像列表,并且可以使用 openCV.js 模板匹配来进行比较,它可以工作,但图像来自 URL,是否可以完全绕过整个画布构建部分?

这是JS

function createMainImage() {

    var canv = document.getElementById('main');
    let context = canv.getContext('2d');

    var img = new Image();
    img.crossOrigin = "Anonymous";

    img.onload = function () {
        canv.width = img.width;
        canv.height = img.height;
        context.drawImage(img,img.width,img.height);
    };

    img.src = 'https://xxxx/000000.jpg';

}

function createTemplateImage() {

    var canv = document.getElementById('template');
    let context = canv.getContext('2d');

    var img = new Image();
    img.crossOrigin = "Anonymous";

    img.onload = function () {
        canv.width = img.width;
        canv.height = img.height;
        context.drawImage(img,img.height);
    };

    img.src = 'https://xxxx/000000.jpg'; // whole bunch from array

}

function openCV() {

    createMainImage();

    let src = cv.imread('main');

    createTemplateImage();

    let templ = cv.imread('template');

    let dst = new cv.Mat();
    let mask = new cv.Mat();

    cv.matchTemplate(src,templ,dst,cv.TM_CCOEFF_norMED,mask);

    let result = cv.minMaxLoc(dst,mask);

    console.log(result); //works
}

这是 HTML

<canvas id='main' hidden></canvas>
<canvas id='template' hidden></canvas>

我想做的是将模板图​​像与主图像进行比较,我在一个数组中有完整的模板图像列表,我只想看看主图像是否与模板图像相同,用这个我想使用 for 循环来更新 templ.src 基本上用 URL 替换 cv.imread 但如果我是正确的,这似乎无法使用 opencv.js。我可以以某种方式将图像转换为 opencv.js 喜欢的格式,而不是每次构建画布吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)