我是靠谱客的博主 儒雅指甲油,最近开发中收集的这篇文章主要介绍matlab剪切复制文件,matlab文件复制、剪切、删除及caffe应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

实现:

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

data='K:test1';

copydata='K:test2';

movedata='K:test3';

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分类11train';

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分类11val';

pathSave='L:seg分类11valguiyi';

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

最后

以上就是儒雅指甲油为你收集整理的matlab剪切复制文件,matlab文件复制、剪切、删除及caffe应用的全部内容,希望文章能够帮你解决matlab剪切复制文件,matlab文件复制、剪切、删除及caffe应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(87)

评论列表共有 0 条评论

立即
投稿
返回
顶部