[matlab] 读取数据-保存数据-文件移动和复制

       当使用其他程序或手工标记图像中人脸(或其他目标)标记的矩形框位置等其他信息,需要保存数据到.mat或.txt文件中,使用时再重新读取。这个过程中实用的一些方法记录如下。


一、数据读取

1. 记事本txt中每一行保存一项数据,将其中的每一列读入MATLAB

(1)读入Cell

fid = fopen(filename, 'r');
C = textscan(fid, '%d %d %f %f %f %f %f %f %f %f', 'Delimiter', ',');
fclose(fid);

功能:将filename读入C,C是一个cell,包含10项,每一列保存在一起

(2)读到变量A中

A = load('.\my.txt');

功能:将my.txt的数据读到A,文本中每一行对应A的每一行


2.读取视频到图像

curname = '.\a.avi';

obj = VideoReader(cur_video); % obj中包含帧数、帧速等信息
img = read(obj,j);%读取第j帧到img


二、数据保存

1.保存到.txt

dlmwrite('./my.txt', A, 'precision', 4, 'delimiter', ',');

功能:将A写入my.txt中,A的每一行对应文本中每一行,同一行数据之间用逗号(,)间隔,可以在‘delimiter'中修改成其他符号;也可以查help帮助


2.保存matlab过程中的变量

save('E:\1.mat','a','b');

功能:将变量a,b保存到1.mat,后面可以加很多变量,当load('E:\1.mat')时,会导入变量a,b.


3.保存图像

    imshow(img);%画出图像img
    set(gca,'units','normal','pos',[0 0 1 1],'PlotBoxAspectRatioMode','auto','DataAspectRatioMode','auto');

%将图像充满整个绘图区,避免有白边
   imwrite(img,imgpath);  %写入保存路径,例如 imgpath = 'E:\1.jpg';

三、将视频批量保存成图像文件

videopath = 'E:\video_anno\alter\';
labelpath = 'E:\video_anno\video_label\';


info = dir(videopath);


for i = 1:length(info)
    if info(i).isdir
        continue;    
    end
    cur_video = [videopath info(i).name];
    obj = VideoReader(cur_video); 


    for j=1:obj.NumberOfFrames
        img = read(obj,j);     
        t = info(i).name;
        imgpath = [labelpath t(1:end-4) '\img1\' num2str(j,'%06d') '.jpg'];%文件名固定6位长度,前面填充0


        imshow(img);
        set(gca,'units','normal','pos',[0 0 1 1],'PlotBoxAspectRatioMode','auto','DataAspectRatioMode','auto');    
       imwrite(img,imgpath);   
    end
end

功能:将videopath中的视频保存成每一帧图片到labelpath对应每个文件中


四、文件复制和文件移动

movefile('source','destination');%将一个文件(source)移动到另一个文件(destination),也可用做重命名

copyfile('source','destination');%将一个文件复制到另一个文件路径,也可重命名,修改destination即可






猜你喜欢

转载自blog.csdn.net/Miss_ear/article/details/52068062