比较 node.js 中的图像(使用例如 opencv)

Compare images in node.js (using e.g. opencv)

我想做的是使用 node.js 获取图像差异。 最终我想要一个方法,例如两个文件路径或图像数据输出两者的减法。有点像 compare function in imagemagick.

类似于:

var comparison_result = compareModule.compare('./image1.png', './image2.png');

此外,我想获得标记差异的点在结果图像中的位置。

像这样:

comparison_result.forEach(function(difference) {
    console.log("A difference occurred at " + difference.x + "|" + difference.y);
}); 

我安装了 node-opencv,但是我找不到将基本 opencv c++ 函数映射到 node.js 的文档。 我想使用的函数是 cvSub.

我想避免使用 js-imagediff,因为它与 canvas 一起使用,对 "cairo" 有依赖性,我不确定我是否可以访问这些点,因为在文档中它更像是 returns 图像的差异。

我从未尝试通过 cv::addWeighted() 计算每个元素的差异,但它可能在实践中有效:

var diff = new cv.Matrix(first.width(), first.height());
diff.addWeighted(first, 1.0, second, -1.0);

在本机代码 (C++) 中,此函数可以替换为以下表达式:

diff = first*1.0 + second*(-1.0) + 0.0;

p.s.: node-opencv的作者发布了一个测量相似度的示例代码:
node-opencv / examples / dissimilarity.js