精华内容
下载资源
问答
  • 一款采用数组去重的方法过滤重复的水果图片效果代码,jQuery水果图片重复筛选去除代码。
  • jQuery水果图片重复筛选去除代码是一款采用数组去重的方法过滤重复的水果图片效果代码。
  • <li data_arry='1'><img > <li data_arry='10'><img > <li data_arry='2'><img > <li data_arry='3'><img > ... 一款采用数组去重的方法过滤重复的水果图片效果代码,jQuery水果图片重复筛选去除代码。
  • 一款用来查找图片重复的工具,重复图片删除,图片比对
  • 我想要筛选faceImage列中的BLOB图片哪些是重复的,显示出他的playeerId,,有没有大神帮帮忙 要JAVA的完整代码 ![图片说明](https://img-ask.csdn.net/upload/201903/08/1552011951_869264.png)
  • 重复图像筛选处理

    2020-04-15 16:28:15
    想要快速清理掉自己电脑中的重复图像文件吗?Duplicate Photos Fixer Pro就是一款十分有效的重复照片清理软件。使用这款软件能够帮助大家快速扫描和删除重复或类似的照片,并将这些图像一一整理出来,加以清除,是一...

    想要快速清理掉自己电脑中的重复图像文件吗?Duplicate Photos Fixer Pro就是一款十分有效的重复照片清理软件。使用这款软件能够帮助大家快速扫描和删除重复或类似的照片,并将这些图像一一整理出来,加以清除,是一款十分好用的清理软件。
    在这里插入图片描述
    Duplicate Photos Fixer Pro Mac 特别版是一款极致的照片修复工具,根据您选择的匹配级别扫描并删除重复或类似的照片。这款迷人的工具可以处理来自Photos和iPhoto的照片,以及来自外部存储器和系统硬盘驱动器的照片。点击即可删除大量相似和重复的照片,释放出充足的磁盘空间!

    展开全文
  • python查找相似图片或重复图片

    千次阅读 2020-08-07 11:02:06
    filename)) #根据MD5值比较 for photo in allfile: md5sum = getmd5(photo) if md5sum not in md5list: md5list.append(md5sum) else: list_delete.append(photo) print('重复的照片有:',list_delete) #删除图片 for...

    1.查找重复图片

    利用文件的MD5值可查找完全一样的重复图片

    import os,time,hashlib
    
    def getmd5(file):
        if not os.path.isfile(file):  
            return  
        fd = open(file,'rb')
        md5 = hashlib.md5()
        md5.update(fd.read())
        fd.close()
        return md5.hexdigest() 
    
    if __name__ == "__main__":
        allfile = []
        md5list = []
        list_delete = []
    
        start = time.time()
        path = 'D:\\_PLAY\\新建文件夹\\'
    
        for filepath,dir,filelist in os.walk(path):
            for filename in filelist:
                allfile.append(os.path.join(filepath,filename))
    
        #根据MD5值比较
        for photo in allfile:
            md5sum = getmd5(photo)
            if md5sum not in md5list:
                md5list.append(md5sum)
            else:
                list_delete.append(photo)
        print('重复的照片有:',list_delete)
        
        #删除图片
        for i in range(len(list_delete)):
            os.remove(list_delete[i])
        
    

    二.查找相似图片

    本文采用四种哈希值进行比较:
    1.感知哈希(perception hashing)
    2.平均散列(average hashing)
    3.梯度散列(difference hashing)
    4.离散小波变换(wavelet hashing)

    import os,imagehash
    from PIL import Image
    
    def hash(path):
        highfreq_factor = 4 # resize的尺度
        hash_size = 32 # 最终返回hash数值长度
        image_scale = 64
        img_size = hash_size * highfreq_factor
        list_file = []
        list_phash = []
        list_ahash = []
        list_dhash = []
        list_whash = []
        for file in os.listdir(path):
            if os.path.splitext(file)[1] == '.jpg':  
                path_file = os.path.join(path, file)  # 拼路径
                list_file.append(file)
                phash = imagehash.phash(Image.open(path_file),hash_size=hash_size,highfreq_factor=highfreq_factor)#感知哈希(perception hashing)
                ahash = imagehash.average_hash(Image.open(path_file),hash_size=hash_size)#平均散列(average hashing)
                dhash = imagehash.dhash(Image.open(path_file),hash_size=hash_size)#梯度散列(difference hashing)
                whash = imagehash.whash(Image.open(path_file),image_scale=image_scale,hash_size=hash_size,mode = 'db4')#离散小波变换(wavelet hashing)
                list_phash.append(phash)
                list_ahash.append(ahash)
                list_dhash.append(dhash)
                list_whash.append(whash)
        #print(list_hash)
        for i in range(len(list_file)):
            for j in range(i+1,len(list_file)):
                phash_value = 1-(list_phash[i]-list_phash[j])/len(list_phash[i].hash)**2
                ahash_value = 1-(list_ahash[i]-list_ahash[j])/len(list_ahash[i].hash)**2
                dhash_value = 1-(list_dhash[i]-list_dhash[j])/len(list_dhash[i].hash)**2
                whash_value = 1-(list_whash[i]-list_whash[j])/len(list_whash[i].hash)**2
                value_hash = max(phash_value,ahash_value,dhash_value,whash_value)
                if(value_hash > 0.9):#阈值设为0.9
                    size_i = os.path.getsize(path + '\\' + list_file[i])
                    size_j = os.path.getsize(path + '\\' + list_file[j])
                    print(list_file[i],str(size_i/1024)+'KB')
                    print(list_file[j],str(size_j/1024)+'KB')
                    print(value_hash)
                    print('***********************')
    
    if __name__ == '__main__':
        path = r'D:\_PLAY\新建文件夹\Excel\ALL_Daily'
        hash(path)
    
    展开全文
  • 通过提取描述图片信息的hash值(phash、whash、dhash等)转化成10进制hash索引,采用字符转化方式可逆转化为原始hash值,通过hash索引组成的图片信息库进行重复图查询和图片信息插入更新,使用多线程信息提取和重复...

    Image-repeat-image-filter

    abstract

    通过提取描述图片信息的hash值(phash、whash、dhash等)转化成10进制hash索引,采用字符转化方式可逆转化为原始hash值,通过hash索引组成的图片信息库进行重复图查询和图片信息插入更新,使用多线程信息提取和重复查询、二分位置查找,信息库建立和查询过程同步,使得重复图查找/搜索与图片信息库大小无关,查询时间稳定在0~10 ms,受图片信息提取时resize耗时影响,均时约0.5 ms。
    后期可以在信息库的存储方式上进行优化,目前以json文件存取,50万图片信息约在25M,随着数据量增多不建议使用文件存取的方式。
    keywords: Hash, 重复图, 二分法, 多线程

    实现算法思路

    1.多线程提取图片的hash值;
    2.hash转化成32~64位长索引值, 在信息库中顺序查找位置索引,相同索引为重复图;
    3.如无重复,将提取图片信息按索引顺序位置插入信息库;
    
    • requirement:
    cv2
    PIL
    concurrent
    imagehash or use my phash only
    
    • 信息库格式
    image_infobase.json
    {"info_base": [[hash_index, image_path], ...]}
    信息库大小会影响读写时的速度,基本不影响查找时间,信息库详细格式如下:
    {
    	"info_base": 
    		[
    			[3010302070400050200020702050207030301, "E:/2019/image_rm-dui/train250_silimar/376-19_50325220.jpg"], 
    			[3010302070400050200020702050207030301, "E:/2019/image_rm-dui/train250_silimar/377-19_50393399.jpg"], 
    			[5040305050303020703050105020602060600, "E:/2019/image_rm-dui/train250_silimar/952-69_50475587.jpg"], 
    			[106000103040107020705050602010605020001, "E:/2019/image_rm-dui/train250_silimar/800-4_47983604.jpg"], 
    			[106020300060505070507050101030504010701, "E:/2019/image_rm-dui/train250_silimar/30-53_48706252.jpg"], 
    			[106020300060505070507050101030504010701, "E:/2019/image_rm-dui/train250_silimar/31-53_49151624.jpg"], 
    			[107040005020001010304020606070106020301, "E:/2019/image_rm-dui/train250_silimar/1228-22_50197080.jpg"], 
    			[107040005020001010304020606070106020301, "E:/2019/image_rm-dui/train250_silimar/1229-22_50248780.jpg"], 
    			[202070502070004060200010603070007050400, "E:/2019/image_rm-dui/train250_silimar/1920-40_49714099.jpg"]
    		]
    }
    

    代码拆解

    1、提取待查重图片信息
    提取图片的phash,这里自写phash提取(也可采用其他库hash提取,如:imagehash),采取图片不同RGB通道不同位置区域提取,如下图(就是图片这段代码哈,方便看):
    phash提取位置组合

    def pHash(img, read=False):
        if read:
            # img = io.imread(img)
            # img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
            img = cv2.imread(img)
            img = cv2.resize(img, (32, 32), interpolation=cv2.INTER_CUBIC)
        vis = np.zeros_like(img)
        if len(img.shape)==3:
            vis[..., 0] = cv2.dct(cv2.dct(np.float32(img[..., 0])))
            vis[..., 1] = cv2.dct(cv2.dct(np.float32(img[..., 1])))
            vis[..., 2] = cv2.dct(cv2.dct(np.float32(img[..., 2])))
            vis1 = (vis[6:14, 6:14, 0] + vis[6:14, 18:26, 1] + vis[18:26, 6:14, 2] + vis[18:26, 18:26, 0] + vis[12:20, 12:20, 0] + vis[12:20, 12:20, 1] + vis[12:20, 12:20, 2])/7.0
        else:
            vis[..., 0] = cv2.dct(cv2.dct(np.float32(img[..., 0])))
            vis1 = (vis[6:14, 6:14, 0] + vis[6:14, 18:26, 0] + vis[18:26, 6:14, 0] + vis[18:26, 18:26, 0] + vis[12:20, 12:20, 0]) / 5.0
        img_list = vis1.reshape(-1).tolist()
    
        avg = np.mean(img_list)
        avg_list = ['0' if i < avg else '1' for i in img_list]
    
        phash = ['%d' % int("".join(avg_list[x:x + 3]), 2) for x in range(0, 8 * 8, 3)]
        int_hash = ''
        for i in phash:
            if int(i) < 10:
                # 如果为各位数十位补零
                int_hash += '0' + str(i)
            else:
                int_hash += str(i)
        int_hash = int(int_hash)
        return int_hash
    

    提取后的hash值先逐位转化为二进制字符,后通过字符型转换成中间十位数补0的hash索引序列,如:

    ['12', '13', '12', '4', '1', '15', '12', '5', '14', '7', '6', '5', '2', '0', '4', '5']
    --> 12131204011512051407060502000405
    

    2、图片在信息库位置查找
    图片hash索引在信息库中位置查找,二分法查找target在List(信息库)中位置

    def find_Sorted_Position(List, target):
        """
        # 二分法查找100000000以内,查找耗时不超过1ms
        :param List: the list waiting to lookup
        :param target: target number
        :return: target's position
        """
        if target < List[0]:
            return 0
        elif target > List[-1]:
            return len(List)
        else:
            low = 0
            high = len(List) - 1
            while low <= high:
                mid = (high + low) // 2
                if high - low <= 1:
                    return mid + 1
                elif target == List[mid]:
                    return mid
                elif target < List[mid]:
                    high = mid
                else:
                    low = mid
            return low + 1
    

    3、更新图片信息库

        def info_update(self, update=False):
            import time
            tm_min = time.localtime(time.time())[5]
            # 每30min更新一次图片信息库
            if tm_min % 31 == 0 or update:
                time_start = time.time()
                with open(self.infobase, 'w') as write_f:
                    img_info = {"info_base": self.img_dict}
                    json.dump(img_info, write_f)
                print("写/更新的图片信息库耗时: {:0.4f} s".format(time.time() - time_start, len(self.img_dict)))
                with open("similar_imgs.txt", 'a')as file_similar:
                    for similar_img in self.similar:
                        file_similar.write(similar_img[0] + ' ' + similar_img[1] + '\n')
    
    • 本地测试结果展示
    读取图片信息库数据字典耗时: 0.6860 s
    当前信息库图片数量:  436776
    10-57_50157089.jpg is similar to E:/2019/image_rm-dui/train0/57_50157089.jpg !
    100-57_49992915.jpg is similar to E:/2019/image_rm-dui/train0/57_49992915.jpg !
    0-69_50002503.jpg is similar to E:/2019/image_rm-dui/train0/69_50002503.jpg !
    1-69_50362572.jpg is similar to E:/2019/image_rm-dui/train0/69_50002503.jpg !
    1002-69_49593728.jpg is similar to E:/2019/image_rm-dui/train0/69_49593728.jpg !
    1000-69_49924978.jpg is similar to E:/2019/image_rm-dui/train0/69_49924978.jpg !
    1001-69_49926153.jpg is similar to E:/2019/image_rm-dui/train0/69_49924978.jpg !
    1003-69_49614853.jpg is similar to E:/2019/image_rm-dui/train0/69_49593728.jpg !
    重复图查找平均耗时: 0.2556 ms
    写/更新的图片信息库耗时: 1.3470 s
    
    • 觉得还行,点个,或者github点个star呗,有问题欢迎留言咨询, 奉上github完整demo地址link
    https://github.com/tao-ht/Image-repeat-image-filter
    

    Copyright hengtao tao. All Rights Reserved.

    展开全文
  • 如何筛选出datetime字段在4月份内跟datetime字段不包含4月份内,name字段和region字段相同的数据,即4月份中某个数据name为"AA",region为"东莞",跟不是在4月份内的某个数据name为"AA",region为"东莞,视为相同,...
  • 作者经常从网上下一些图片,经常放在C盘Administrator的Pictur下面,有时为了防止重装系统导致图片丢失,会将图片拷贝到其它盘,这样时间一长,重复图片大量堆积。当然还有别的情况导致图片重复的情况发生。另外图片...

    一、概述

        作者经常从网上下一些图片,经常放在C盘Administrator的Pictur下面,有时为了防止重装系统导致图片丢失,会将图片拷贝到其它盘,这样时间一长,重复图片大量堆积。当然还有别的情况导致图片重复的情况发生。另外图片分布并不集中,C盘 D盘 F盘都有,要一个个比较筛选实在是麻烦,所以就写了个脚本自动处理,也可以供大家学习。

    二、适用条件

    1.本脚本用于处理.jpg .jpeg两种类型的图片。读者可以自行修改脚本增加其它图片类型,如.png .bmp等。

      也可以改为处理其它类型的文件,如txt,dpf等。

    2.读者适用前请将脚本中的源目录(SrcDir)和目标目录(DstDir)改为自己的目录,输出结果文件目录和名称(f:\out.txt)可自行修改。

    3.本脚本删除的是目标目录下的存在的重复图片。

    三、批处理脚本

    ------------

    rem 说明:
    rem 本脚本用于处理重复的图片。
    rem 将SrcDir和DstDir下的图片进行对比,如果DstDir中的图片已经存在于SrcDir中,则
    rem 将DstDir中重复的图片删除并记录下来输出到Result中。图片大小一致,但名称不同则视为疑似重复图片,也输出到Result中。
    @echo off&setlocal enabledelayedexpansion
    set "SrcDir=f:\test\test1"
    set "DstDir=f:\test\test2"
    set "Result=f:\out.txt"
    echo 被删除图片为:>%Result%
    ::xcopy /y /s %SrcDir% %DstDir%
    for /r "%DstDir%\" %%a in (*.jpg *.jpeg) do (
       set "count=0"
       for /r "%SrcDir%\" %%b in (*.jpg *.jpeg) do (             
        if %%~za EQU %%~zb  (
          rem 疑似重复图片,还需比较文件名
        if %%~nxa EQU %%~nxb (
            rem record repeat times.
               set /a count=!count!+1
            if !count!==1 (
          echo,%%~dpnxa>>%Result%
                del /f %%~dpnxa 
           
           ) else (
             echo 疑似重复图片: >> %Result%
          echo %%~dpnxa  %%~dpnxb >> %Result%
           )
        )
     )
    )
    pause
    ---------

    转载请注明链接,谢谢!

    展开全文
  • 图片展示: 文本展示(可copy进txt,导入excel,再导入数据库生成): 序号,企业,建设主体 1,渝兴印刷厂,供销社 2,莱迅塑胶材料厂,供销社 3,金盏塑料厂,粮管所 4,红林五金电器厂,粮管所 5,永明...
  • 使用R语言筛选数据中的重复

    千次阅读 2020-08-07 13:11:47
    在进行数据的预处理时,我们常常关注有无重复数据,如果两行数据完全一致,则可能存在数据的重复录入等情况,此时就要对这两行数据进行核实。但这个过程如何用R语言实现?笔者近期对这个问题进行了探索。 我们首先...
  • 不同的数据集数量不一,且列别繁多,在做图像分类实验时,如果人工的去筛选和划分图片,工作量巨大,还容易犯错。作为一名合格的程序员,不会偷懒是万万不行的!废话不多说,直接上代码:#!/bin/bashtrainPath="此处...
  • 重复相似图片查找软件(Visual Similarity Duplicate Image Finder Pro)是一款功能强大的重复相似图片查找工具程序的主要目的是帮助您在文件夹中查找相同或重复图片文件,它使用的先进的算法,即使相同的图片具有...
  • Easy Duplicate Photo Finder for...使用Easy Duplicate Photo Finder for Mac如何查找重复图片 在Mac上使用Easy Duplicate Photo Finder for Mac查找重复的图片,创建查找目录有两种方法。 1.第一种,在访达中打开Easy
  • @file : 图片去重.py # @Time : 2020/8/14 10:02 """ #!usr/bin/env python #-*- coding:utf-8 _*- """ @Author : LIAOH @file : 图片去重.py # @Time : 2020/8/10 11:37 """ import os import shutil from...
  • 记录一下 Java 代码实现文件夹、文件的对比,主要包含 word、pdf、文本、图片等相关文件的对比计算,以及计算文本的相似率(重复率)、筛选出差异的文件、方便文件和文档的去重,并把所有的源码封装为jar包,简单...
  • 点击可以重复的选择一项,要求是每一类型的只能是一个,代码图片如下: ![图片说明](https://img-ask.csdn.net/upload/201610/10/1476065633_992712.png) ![图片说明]...
  • 同名文件筛选工具

    2018-03-14 16:04:15
    python 重复命名文件 筛选工具,也是一个python学习的范本。
  • 正则表达式小练-----筛选图片格式

    千次阅读 2018-08-10 14:11:38
    //exec()是正则的方法,返回匹配的第一个字符串,以及小括号里边的子项,因为具有记忆功能,所以重复调用,可以获取所有匹配的字符串。 if(obj[arr[1]]){ obj[arr[1]]++;//存在则开始计数,计算各类...
  • 重复的文件进行筛选并能删除,包括图片和音乐、各种文档、影视剧等,和其他大部分重复文件搜索软件得一个个点击选定重复文件删除不一样,本软件可以支持一键选定重复文件并删除。
  • 检测重复图像

    2019-07-29 17:54:29
    检测重复图像 在做一个深度学习的课题,打算做一个自动化采集数据集的自动化设备,运动设备与相机采集曝光频率往往对不上,偶尔会出现卡吨、延迟现象,所以做了一个简易的针对性强的自动筛选的python程序。主要用的...
  • 商品属性筛选,商品筛选
  • 相同图片查找器

    2011-11-06 08:20:02
    重复图片搜索器运行后会自动搜索您电脑中所有硬盘上的图片,并为您查找出哪些照片是重复的,方便您进行整理。。现在的数码照片的体积越来越大,喜欢拍照片的朋友可能电脑里早已经被照片塞的满满的了,这其中就有很大...
  • python爬虫之爬百度美女图片

    千次阅读 2016-11-09 19:51:56
    用python爬一些东西很方便,也很简单 今天给大家分享一个利用python爬百度美女图片的例子 首先我们要获得一个页面的源码信息,然后我们要...比较复杂的是提取源码中的图片地址,我们要用到正则筛选,但筛选后有重复url
  • 37)9.6兼容傲游2.5.2测试版,允许获取重复图片,增加取图完成提示,修改了一个固定点击错误。附带的缓存图片查看器升级到1.5版本,可以按网址或访问时间排序,可以保存非图片类文件。 38)9.7可以对IE多选项卡同时取...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,463
精华内容 8,985
关键字:

如何筛选重复的图片