十万张图片进行对比,如何找出其中相同的图片? 要从十万张图片里面找出所以相同的图片。各位有什么好的思路?不要告诉我用两个for循环嵌套,一个一个去比较。先行谢谢各位了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 嗯,两个for循环嵌套 倒是不必要的但一个循环总是要有的,这个方案能接受吗? 本帖最后由 xuzuning 于 2012-11-16 07:40:08 编辑 看标题我还以为你要做类似google的图片搜索呢。你这种简单的找相同文件比较文件md5就可以了。不过注意,必须是完全相同的两个文件!两张图片有一个像素不同,md5结果也是不同的。 这代碉堡了。利用PHP自带的ISSET函数来进来判断。牛逼。版主威武! 因为只是测试这一万多个文件,就没有保存md5值了,只是求这一万多个文件临时存到了数组中。若是项目中,考虑到还有后续新增的图片文件,可以将md5值做为索引保存到数据库。这也不失为一个方法。 把每张 图片md5,存储md5后的值入数据库。然后搜索就是 问一下哈foreach(blob('path/*' as $f) 里面的blob('path/*' 是不是掉了一个‘)’,还有blob('path/*' 是什么意思啊 查php.net,你就知道blob是干嘛的 我觉得要是后面需要扩展的话,保存起文件的md5是狠必要的,那么保存的话存在数据库中或者内存中其实是不划算的,那么个人认为可将每个文件的md5值存储在一个txt文件中,那么这样的话就会好些了应该,然后explode成一个数组,之后就是循环查找,就是不知道效率怎么样!个人见解、楼主莫喷 10w也就100k啊32字节的hash也就是3.2M啊这数据也不大,怎么就不划算了呢 44秒只能说你的图片已经很小了,换上几M乃至十几M一张图片,CPU再弱一点的话,半个小时以上不成问题我刚刚i3 hash 300张图片都用了近十分钟,每张都是几十M的……同目录下应该先比较字节数再hash,减少CPU压力 首先你的10W文件哪里来的来之前就得考虑做标志!将每个的hash保存到数据库然后直接在数据库做对比而不是现在直接这样处理如果目前已经木已成舟 那就建议 做个工具先处理成hash保存到数据库!再做对比 for循环是少不了的,但是可以有办法让for循环的次数减少。先对图片处理吧,可以先对图片进行降维建立特征值图片(可以删除掉大量和图片无关的信息,但是还是可以保证对比成功,最常见得就是[PCA了),保存之后就是矩阵的表示形式,用距离来计算就好了 自己想的一个想法,没实现过,抛出来讨论一下。第一轮:取每个图片的数据,截取前面小额的数据,例如256 bit ,做比较。第二轮: 对相同的数据,进行二次全值比对。当然,程序的运行复杂度,取决于相同图片的多少。这个方法我想应该挺适合10w 中仅有几十张相同的。 安装楼上的说法,算出MD5,存到数据库里面,然后使用sql查询,应该可以查出相同的 用PHP函数了,好像有个函数有这种功能 glob本函数不能作用于远程文件,被检查的文件必须通过服务器的文件系统访问。blob , php5手册没有啊 还有就是弱弱的问一句,同一个文件夹里面可以有两个完全相同的图片吗 dede插入数据重复,什么原因? PHPBB3的伪静态 如何在throw new Exception(...时ajax能得知异常 关于UBB和HTML的! 请老手介绍比较好的php代码 大家,请问PHP环境怎么配置啊,能教我吗? 哪里有jpgraph的文档,函数使用说明或例子?谢谢! 关于echo session,高手快来帮我!!!! apache服务器最多支持多少中脚本程序 如何在CentOS系统下搭建自己的smtp系统 求助!用curl模拟登陆cookiejar获得验证码的cookie的问题
但一个循环总是要有的,这个方案能接受吗?
这代碉堡了。利用PHP自带的ISSET函数来进来判断。牛逼。版主威武!
因为只是测试这一万多个文件,就没有保存md5值了,只是求这一万多个文件临时存到了数组中。若是项目中,考虑到还有后续新增的图片文件,可以将md5值做为索引保存到数据库。这也不失为一个方法。
32字节的hash也就是3.2M啊
这数据也不大,怎么就不划算了呢
44秒只能说你的图片已经很小了,换上几M乃至十几M一张图片,CPU再弱一点的话,半个小时以上不成问题我刚刚i3 hash 300张图片都用了近十分钟,每张都是几十M的……同目录下应该先比较字节数再hash,减少CPU压力
来之前就得考虑做标志!将每个的hash保存到数据库
然后直接在数据库做对比
而不是现在直接这样处理如果目前已经木已成舟
那就建议 做个工具先处理成hash保存到数据库!再做对比
第一轮:
取每个图片的数据,截取前面小额的数据,例如256 bit ,做比较。
第二轮:
对相同的数据,进行二次全值比对。当然,程序的运行复杂度,取决于相同图片的多少。这个方法我想应该挺适合10w 中仅有几十张相同的。
blob , php5手册没有啊
还有就是弱弱的问一句,同一个文件夹里面可以有两个完全相同的图片吗