Libpuzzle with PHP 图片相似度比较扩展

下载安装文档 :http://download.pureftpd.org/pub/pure-ftpd/misc/libpuzzle/doc/README
http://download.pureftpd.org/pub/pure-ftpd/misc/libpuzzle/doc/README-PHP
之后重启服务(apache/nginx) 然后查看phpinfo里面是否包含了~~ Libpuzzle




<?php

# 获取2个图片的签名值

$cvec1 = puzzle_fill_cvec_from_file('img1.jpg');

$cvec2 = puzzle_fill_cvec_from_file('img2.jpg');


#对比2个签名的差距,范围在0-1之间 0完全吻合 1不吻合

$d = puzzle_vector_normalized_distance($cvec1, $cvec2);


#判断是否一致

#PUZZLE_CVEC_SIMILARITY_THRESHOLD==0.6;  //比较相似         
#PUZZLE_CVEC_SIMILARITY_HIGH_THRESHOLD==0.7; //好像相似          
#PUZZLE_CVEC_SIMILARITY_LOW_THRESHOLD==0.3; //差不多
#PUZZLE_CVEC_SIMILARITY_LOWER_THRESHOLD==0.2 //基本一样

if ($d < PUZZLE_CVEC_SIMILARITY_LOWER_THRESHOLD) {

  echo "图片相似\n";

} else {

  echo "不相似, 差距值=$d\n";

}


#压缩签名,方便存入数据库


$compress_cvec1 = puzzle_compress_cvec($cvec1);

$compress_cvec2 = puzzle_compress_cvec($cvec2);

//返回的压缩签名值编码为CP936不是utf8 ,入库前需要转换下编码

$compress_cvec_new = utf8_encode(addslashes($compress_cvec));

?>   


先把远程的图片生成到本地后 使用该方法获取签名值,
获取相识度:$distance =  puzzle_vector_normalized_distance($sign1,$sign2);
$distance  与0.3 比较 。








命令行直接比较
puzzle-diff /alidata/www/wwwroot/public/Uploads/Images/Index/lyq.jpg  /alidata/www/wwwroot/public/Uploads/Images/Index/lyq1.jpg

puzzle-diff /alidata/www/wwwroot/public/Uploads/Images/Index/lyq.jpg  /alidata/www/wwwroot/public/Uploads/Images/Index/lyq1.jpg


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值