如果我们是为了版权问题寻找图像副本——或者我们只是想确定两张相似的照片之间的相似程度——我们可以在我们的Nodejs应用程序中调用一些免费的API,轻松完成图像比较。
我们可以使用深度学习AI图像对比方法来分析两张图片并生成一个“相似度分数”(范围在0到1之间,数值越大表示越相似),或者我们可以使用常用的感知哈希方法(常用于图片版权纠纷中),将一张图片的基准哈希值与另一张图片的哈希值进行对比。
图像的基准哈希值在每次对照片进行编辑时保持不变。也就是说,通过对比哈希值,我们可以看出该照片的另一个版本被修改的程度。
使用下面的代码,我们可以轻松利用这些免费API,它们分别实现了上述每种比较功能。我们可以用一个免费的API密钥来授权我们的API调用,这每月最多允许800次API调用,无需任何额外承诺,并通过一个NPM命令安装客户端SDK。
让我们从安装客户端SDK开始。我们可以通过下面的NPM命令(即Node.js包管理器)来运行:
npm install cloudmersive-image-api-client --save
在终端中运行此命令以安装cloudmersive-image-api-client模块。
也可以直接在我们的package.json中添加Node客户端库:
"dependencies": {
"cloudmersive-image-api-client": "^1.3.4" // 依赖于cloudmersive-image-api-client库,版本号为^1.3.4
}
接下来,我们可以复制代码示例来结构化我们的 API 调用。我们可以用自己的 API 密钥替换 ‘YOUR API KEY’
占位符字符串以处理授权问题。
通过以下代码,我们可以调用一个基于深度学习AI分析来比较图像的API。如果需要,可以选择自定义recognitionMode
参数,设置为“Basic”、“Normal”或“Advanced”字符串值。设置为“Advanced”将提升图像识别的效果(默认设置为“Normal”模式)。
var CloudmersiveImageApiClient = require('cloudmersive-image-api-client');
var defaultClient = CloudmersiveImageApiClient.ApiClient.instance;
// 配置API密钥:Apikey
var Apikey = defaultClient.authentications['Apikey'];
Apikey.apiKey = 'YOUR API KEY';
var apiInstance = new CloudmersiveImageApiClient.RecognizeApi();
var baseImage = Buffer.from(fs.readFileSync("C:\\temp\\inputfile").buffer); // 文件 | 作为基准的图像。支持常见的格式,如PNG和JPEG。
var comparisonImage = Buffer.from(fs.readFileSync("C:\\temp\\inputfile").buffer); // 文件 | 用于比较的图像。
var opts = {
'recognitionMode': "recognitionMode_example" // 字符串 | 可选,指定识别模式;可能的选项包括Normal、Basic和Advanced。默认为Normal。
};
var callback = function(error, data, response) {
if (error) {
console.error(error);
} else {
console.log('API调用成功。返回数据如下:' + data);
}
};
apiInstance.recognizeSimilarityCompare(baseImage, comparisonImage, opts, callback);
通过以下代码,我们可以比较两个感知哈希之间的相似性。这假定我们已经有了哈希值。
var CloudmersiveImageApiClient = require('cloudmersive-image-api-client');
var defaultClient = CloudmersiveImageApiClient.ApiClient.instance;
// 配置 API 密钥:Apikey
var Apikey = defaultClient.authentications['Apikey'];
Apikey.apiKey = 'YOUR API KEY';
var apiInstance = new CloudmersiveImageApiClient.RecognizeApi();
var request = new CloudmersiveImageApiClient.ImageSimilarityHashDistanceRequest(); // ImageSimilarityHashDistanceRequest |
var callback = function(error, data, response) {
if (error) {
console.error(error);
} else {
console.log('API 调用成功。返回的数据是:' + data);
}
};
apiInstance.recognizeSimilarityHashDistance(request, callback);
我们可以用以下 JSON 模型来构建我们的哈希值比较请求。
{
"ImageHash1": "字符串值",
"ImageHash2": "字符串值"
}
如果我们没有要比较的图像的图像哈希值,我们可以使用以下代码为图像生成哈希值。我们还可以在这里设置 ‘recognitionMode’
参数,以提高图像分析的容错能力。
var CloudmersiveImageApiClient = require('cloudmersive-image-api-client');
var defaultClient = CloudmersiveImageApiClient.ApiClient.instance;
// 设置 API 密钥如下:
var Apikey = defaultClient.authentications['Apikey'];
Apikey.apiKey = 'YOUR API KEY';
var apiInstance = new CloudmersiveImageApiClient.RecognizeApi();
var imageFile = Buffer.from(fs.readFileSync("C:\\temp\\inputfile").buffer); // 这是一个用于操作的图像文件,支持常见的格式,例如 PNG 和 JPEG。
var opts = {
'recognitionMode': "recognitionMode_example" // 可选的识别模式,可以是 Normal(默认)、Basic 或 Advanced。
};
var callback = function(error, data, response) {
if (error) {
console.error(error);
} else {
console.log('API 调用成功,返回的数据是:' + data + '.');
}
};
apiInstance.recognizeSimilarityHash(imageFile, opts, callback);
那就是我们需要的所有代码了!现在我们只需几行代码就能以两种方式轻松比较两张图像。
共同学习,写下你的评论
评论加载中...
作者其他优质文章