我需要创建一个“浏览”按钮,允许用户选择图像或视频文件,但读取这些数据类型的逻辑是不同的。
浏览并阅读视频文件
FileName = uigetfile('*.avi','Select the avi file');
v = VideoReader(FileName);
video = readFrame(v);
imshow(video, 'Parent', handles.axes1);
浏览并阅读图像文件
[FileName PathName] = uigetfile('*.jpg','Select the jpg file');
Image = imread([PathName FileName]);
imshow(Image, 'Parent', handles.axes1);
如何将此逻辑合并为一个功能,以便我可以通过一个加载对话框成功加载图像或视频?
答案 0 :(得分:0)
您可以允许用户选择任何文件,然后使用扩展程序来确定要执行的操作。
[fname, pname] = uigetfile('*.*', 'Select an Image or Video File');
filename = fullfile(pname, fname);
[~, ~, extension] = fileparts(filename);
switch lower(extension)
case {'.jpg', '.png', '.tif'}
img = imread(filename);
case {'.avi', '.mpg'}
reader = VideoReader(filename);
img = readFrame(reader);
otherwise
error('Invalid file selected');
end
imshow(img, 'Parent', handles.axes1);
或者您可以为uigetfile
filters = {'*.jpg', '*.avi'};
[fname, pname, findex] = uigetfile(filters, 'Select a Video or Image');
filename = fullfile(pname, fname);
if findex == 1 % jpeg
img = imread(filename);
elseif findex == 2 % avi
reader = VideoReader(filename);
img = reader.readFrame();
end
imshow(img, 'parent', handles.axes1);