我想要做的是使用node.js获取图像差异。 最终我希望有一种方法可以期待,例如两个文件路径或图像数据输出两者的减法。不知何故像compare中的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”,我不确定我是否可以访问这些点,因为在文档中它似乎只是返回差异作为一个形象。
答案 0 :(得分:1)
我从未尝试按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