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



我想做的是使用 node.js 获取图像差异。最终,我希望有一种期望例如两个文件路径或图像数据输出两者减法的方法。不知何故就像图像魔术中的比较功能一样。

像这样:

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,因为它适用于画布,依赖于"开罗",我不确定我是否可以访问这些斑点,因为在文档中它似乎只是将差异作为图像返回。

我从未尝试过按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;

PS:Node-OpenCV的作者发布了一个用于测量相似性的示例代码:
节点-OpenCV/示例/差异性.js

最新更新