设为首页收藏本站

52matlab技术论坛,matlab教程,matlab安装教程,matlab下载

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 260|回复: 0

去除文件夹中重复图片的脚本程序

[复制链接]
  • TA的每日心情
    开心
    2015-3-12 11:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    84

    主题

    148

    帖子

    1345

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    1345
    发表于 2018-8-22 03:01:08 | 显示全部楼层 |阅读模式
    本帖最后由 matlab的旋律 于 2018-8-22 03:11 编辑

    本打算将Mac笔记本里面的照片拷贝到移动硬盘备份,不小心点击了复制,非常悲剧的是相册里面的图片多了一倍。打算在网上找一个软件对复制的照片进行删重,连续下载好几个软件,要么是收费,要么是无法正常工作,Mac某些功能对习惯免费的国人来说还是比较非常不友好的。就自己写个脚本搞定吧~~~首先,新建一个.m文件,保存为main


    clear
    close all
    clc

    FilePath = 'lxy';
    FileCell = struct2cell(dir([FilePath,'/*.jpg']));%获取指定目录下所有后缀相同的文件名
    num_column = size(FileCell,2);

    rawDataMatrix = {};
    fileMatrix = {};
    k = 0;
    for file_count = 1:num_column
        FileName = FileCell{1,file_count};%获取顺序文件名
        Data = imread([FilePath,'/', FileName]);%加载数据
        isIn = judgePhotoUnique(rawDataMatrix,Data);
        if ~isIn%当当前图片不在筛选文件夹时
            k = k +1;
            rawDataMatrix{k} = Data;
            fileMatrix{k} = FileName;
        end
    end

    uniqueDataFileName = 'UniqueFile';%筛选文件夹
    mkdir(uniqueDataFileName);
    MoveFileToNewPath(FilePath,uniqueDataFileName,fileMatrix);%调用保存筛选文件子函数


    %下面的字函数判断图片在筛选文件中是否存在
    function isIn = judgePhotoUnique(rawDataMatrix,Data)

    isIn = 0;

    for k = 1:length(rawDataMatrix)
        try
            if all(rawDataMatrix{k} == Data)%由于图片的维度不一定一致,需要用try进行尝试判断。当然这里也可以添加相似度或者其他功能的判断
                isIn = 1;
                break;
            end
        catch
            continue;
        end
    end

    %下面的子函数对筛选出来的图片进行剪切和保存到新文件夹中
    function MoveFileToNewPath(old_path,new_path,fileMatrix)

    for k = 1 : length(fileMatrix)
            subFile = fullfile(old_path,[fileMatrix{k}]);
            movefile(subFile,new_path)%这里为剪切,如果只是拷贝可以使用copyfile
    end


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|52matlab技术网站 ( 粤ICP备14005920号-5  

    GMT+8, 2018-12-14 20:02 , Processed in 0.103235 second(s), 37 queries .

    Powered by Discuz! X3.2 Licensed

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表