Matlab GUI设计——文件读取和保存uigetfile,uiputfile

本文详细介绍了在Matlab GUI中如何使用uigetfile和uiputfile函数进行文件读取和保存操作。通过实例代码解析uigetfile的返回值,包括文件名、路径和成功标志,并说明如何读取视频。强调uigetfile仅获取文件信息,实际读取还需借助其他函数。此外,提到了多文件选择和设置默认路径的功能。
摘要由CSDN通过智能技术生成

这一篇主要介绍一些Matlab GUI制作时常用到的文件读取和保存的函数:uigetfile,uiputfile。具体的语法就不再重复,主要通过一些自己编写的GUI来进行介绍,也许这样更有帮助:

1. uigetfile:该函数返回值包含读取的文件的名称cell数组(FileName),文件的路径数组(FilePath),判断读取是否成功的标志FileIndex(不等于0时表示成功)。我们分析下面的matlab代码来进行具体讲解:我们通过在Callback函数中添加uigetfile函数来实现在界面中读入视频,注意到在代码中uigetfile的返回值正好为之前介绍过的三个值,不再介绍,同时{}中表示读取文件的格式选择,‘ReadVideo'则为读取数据的对话框的名称,’MultiSelect'取值为‘on'表示一次可以打开多个视频,当打开的是多个视频时,FileName是一个cell数组,如果取值为’off'时,则只能打开一个视频;还有就是可以设置默认路径,即弹出的对话框中最先能够看到的文件的路径。

注意:uigetfile只是获得了文件的路径和文件名称,并没有其他的任何操作,真正读取数据,需要相应的读取函数,例如图片可以用imread,视频可以用VideoReader对象读取。

function ReadVideoIO_Callback(hObject, eventdata, handles)
% hObject    handle to ReadVideoIO (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%读入视频,前三个是第一次申明,第四个是引用
global InputVideo;
global ResultVideo;
global VideoFullPath;
global isVideo;
[ReadVideoFileName,ReadVideoPathName,ReadVideoFilterIndex] = uigetfile({'*.avi;*.mp4','VideoFile(*.avi,*.mp4)';'*.avi','AVIVideoFile(*.avi)';'*.*','AllFile(*.*)'},'ReadVideo',...
    'MultiSelect','on',...       %是否能够多选,'off'不支持多选, 'on'支持多选
    'C:\Users\hsw\Desktop'); %设置默认路径
if isequal(ReadVideoFileName,0) || isequal(ReadVideoPathName,0) || isequal(ReadVideoFilterIndex,0)
    msgbox('导入视频失败,点击 确定 关闭对话框,再重新导入');
else
    %支持多选时需要处理
    isVideo = 1;
    if iscell(ReadVideoFileName)
        %读入多个视频时
        InputVideo = cell(length(ReadVideoFileName),1);
        VideoFullPath = InputVideo;
        for IterVideo = 1:length(ReadVideoFileName)
            VideoFullPath{IterVideo} = fullfile(ReadVideoPathName,ReadVideoFileName{IterVideo}); %先保存所有视频或图像路径
        end
        VideoObject = VideoReader(VideoFullPath{1});
    else
        %只读入一个视频时
        VideoFullPath = fullfile(ReadVideoPathName,ReadVideoFileName);
        VideoObject = VideoReader(VideoFullPath);
    end
    %     显示第一个视频的第一帧,直到按下Start按钮时,开始显示别的
    frame = read(VideoObject,1);
    axes(handles.OriginalAxes);
    imshow(frame);
    axes(handles.ResultAxes); 
    imshow(255*ones(size(frame))); 
    ResultVideo = InputVideo;
    msgbox('成功导入视频,点击 确定 关掉对话框');
end

2. uiputfile:该函数的返回值同uigetfile函数相同,但是,没有了‘MultiSelect’属性,即一次只能一次保存一个文件,当然,这里是不会真正保存文件的,而是返回路径+文件名称,从而,需要添加真正保存文件的代码,例如imwrite保存图像


3. 一个简单的界面:

function varargout = TestGUI(varargin)
% TESTGUI MATLAB code for TestGUI.fig
%      
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值