matlab剪切复制文件,matlab文件复制、剪切、删除及caffe应用

实现:

% 从data目录中复制指定类型的文件到目录copydata中然后再剪切到movedata中,再找到符合某个条件的文件并删除

data='K:\test\1';

copydata='K:\test\2';

movedata='K:\test\3';

subDir=dir(data);

len = length(subDir);

disp('begin copy files..');

for i=3:len

imgNames = dir(strcat(data,'\',subDir(i).name));

a=[copydata,'\',subDir(i).name];

%先将文件a复制到文件夹2里面,然后再将文件夹2中的文件a再剪切到文件夹3

copyfile([data,'\',subDir(i).name],a);

movefile(a,[movedata,'\',subDir(i).name]);

end

disp('end');

files=dir(movedata);

filenum=length(files);

for curfile=3:filenum

a=strfind(files(curfile).name,'-');%寻找文件名有'-'符号的文件进行删除

if(~isempty(a))

delete([movedata,'\',files(curfile).name]);

end

end

一个修改文件名的代码(为符合caffe的识别):

clear;close all;clc;

%文件命名规则:col+'_'+视频序号+'-'+数据位置+'-'+分割位置标记+'-'+帧号(符合caffe的识别)

%%

%程序设计上考虑数据保存的实际情况,数据根据各个类别放在不同的文件夹里面。

%所以程序设计上,就是读取路径文件夹下面的所有子文件夹的数据,然后改名

%每次运行程序,需要修改的变量如下

changeVedio='178';

fgwzbj='zz';

dirPath='L:\seg\分类';%数据路径

%%

%读取文件夹列表,但这种方式读取会保留原文件.(在结构体中第一个)和上一层目录..(在结构体第二个)。所以真正的数据文件夹从第3个开始

dirList=dir(dirPath);

countList=length(dirList);%文件夹个数

for numList=3:countList%文件夹从3开始,目录中.和..在第一和第二,应该是某种规则

%根据这个过滤掉在此文件夹可能存在的txt文件

%由于这里面保存数据的文件夹都是0,1,2,3..所有用了下面的判断

if(length(dirList(numList).name)>=3)

continue;

end

fileNameList=dir([dirPath,'\',dirList(numList).name]);%读取子文件夹中的图片

fileSum=length(fileNameList);%统计子文件夹中的文件个数

for fileNum=3:fileSum%文件从3开始

%由于对于不同的视频改写的文件名不同,所以要先进行判断,到底是不是要改的文件

%原始图像的文件名为类似于178 4_000001.jpg形式的

%

[spxh,~]=strtok(fileNameList(fileNum).name);%由于前一个程序设定的命名规则,所以由默认的空格符号分割文件名,得到前面的视频序号

%用函数strcmpi判断两个字符串是否相等,函数strcmpi相等输出1,否则输出0

%如果不相等,即不是要处理的数据,进入下一个循环

if strcmpi(spxh,changeVedio)==0

continue;

end

realName=[dirPath,'\',dirList(numList).name,'\',fileNameList(fileNum).name];%依次得到具体图片文件的完整路径

%前178 4_000001.jpg。文件命名规则:视频序号+空格+数据位置+'_'+视频帧号。

%后col_185-4-zz-_000413.jpg。文件命名规则:col+'_'+视频序号+'-'+数据位置+'-'+分割位置标记+'-'+帧号

%想改成的文件名。

sjwz=fileNameList(fileNum).name(5);

zh=fileNameList(fileNum).name(6:end);

changeName=[dirPath,'\',dirList(numList).name,'\','col','_',spxh,'-',sjwz,'-',fgwzbj,'-',zh];%修改后具体图片文件的完整路径

%%%主要就是下面这句更改文件名

movefile(realName,changeName);

end

end

%%

下面是一段生成label的代码:

clear all;clc;

% 写train的label

path='L:\seg\分类\11\train';

filedir=dir(path);%读取目录

countdir=length(filedir);

fid = fopen([path,'\','train.txt'], 'w');%打开文本文件

for numdir=3:countdir

file=dir([path,'\',filedir(numdir).name])%读取文件

countfile=length(file);

for numfile=3:countfile

fprintf(fid,'%s', [filedir(numdir).name,'/',file(numfile).name]);

fprintf(fid,'%s', ' ');%要注意这单独就是用一个空格分隔

fprintf(fid,'%d', str2num(file(numfile).name(1)));%加入label,注意这里加入了一个字符串转换

fprintf(fid,'\n');%换行

end

end

fclose(fid);%关闭文本文件

fclose('all');

文件夹val下面的文件夹里面的图片依次resize固定尺寸到固定目录:

%在同样的文件夹结构、同样的位置

%把指定文件夹以同样的图片类型都转化为32*32的图片

clear;close all;clc;

pathRead='L:\seg\分类\11\val';

pathSave='L:\seg\分类\11\val\guiyi';

dirList=dir(pathRead);%读取文件夹列表,这种方式读取会保留原文件.(在结构体中第一个)和上一层目录..(在结构体第二个)

countList=length(dirList);%文件夹个数

for numList=3:countList%文件夹从3开始

%根据这个过滤掉在此文件夹可能的train.txt文件

%由于这里面保存数据的文件夹都是0,1,2,3..所有用了下面的判断

if(length(dirList(numList).name)>=2)

continue;

end

fileName=dir([pathRead,'\',dirList(numList).name]);%读取子文件夹中的图片

fileSum=length(fileName);%统计子文件夹中的文件个数

%在存储路径,创建对应的文件夹

pathCreDir=[pathSave,'\',dirList(numList).name,'\'];

mkdir(pathCreDir);

for fileNum=3:fileSum%文件从3开始

tempName=[pathRead,'\',dirList(numList).name,'\',fileName(fileNum).name];%依次得到具体图片文件的完整路径

temp=imread(tempName);%读入图片

normtemp=imresize(temp,[32 32]);%归一化图片,尺寸全部改为32*32

%保存在和源文件一样的对应文件夹内,按同样的文件名、文件类型保存

imwrite(normtemp,[pathCreDir,fileName(fileNum).name]);

end

end

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值