为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Node.js中使用深度学习AI或感知哈希算法比较图片

如果我们是为了版权问题寻找图像副本——或者我们只是想确定两张相似的照片之间的相似程度——我们可以在我们的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);

那就是我们需要的所有代码了!现在我们只需几行代码就能以两种方式轻松比较两张图像。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消