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

时间:2015-04-09 11:22:06

标签: javascript node.js opencv image-processing imagemagick

我想要做的是使用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”,我不确定我是否可以访问这些点,因为在文档中它似乎只是返回差异作为一个形象。

1 个答案:

答案 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