写了一个在matlab2006上用摄像头连续采集、保存图像源程序。运行imaq_test.m文件后,弹出保存对话框,指定一个存盘目录,选定保存格式(如.jpg),输入主文件名(如aqim),点击'开始采集'按钮,将以设定的频率采集图像,并以aqim1.jpg,aqim2.jpg...保存在选定的文件夹中。
不知道有没有更好的实现方式,希望大家能给出新的简洁思路,谢谢。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%保存为 imaq_test.m
hfig=figure;
hpush1=uicontrol(gcf,'style','push','unit','normalized',...
'string','开始采集',...
'position',[0.1 0.1 0.1 0.05],'callback','imaq_cyc');
haxis1=axes('unit','normalized',...
'position',[0.3 0.3 0.5 0.5]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%保存为 imaq_cyc.m
%读取任一文件,识别其文件名、后缀名、所在路径
[filename, pathname, filterindex] = uiputfile( ...
{'*.jpg;*.bmp;*.tif;*.png', 'All PHOTO Files (*.jpg;*.bmp;*.tif;*.png)';
'*.jpg','jpg-files (*.jpg)'; ...
'*.bmp','bmp-files (*.bmp)'; ...
'*.tif','tif-files (*.tif)'; ...
'*.png','png-files (*.png)'; ...
'*.*', 'All Files (*.*)'}, ...
'Save as');
if isequal(filename,0) || isequal(pathname,0)
h=msgbox('你按下了取消键!','Title','custom',hot(64));
else
%确定存盘时的主文件名、后缀名
filelen=length(filename);
for k=1:filelen;
if filename(k)=='.';
dotnum=k;
end;
k=k+1;
end;
insuffix= filename(dotnum:end);
infname=filename(1:dotnum-1);
%确定存盘时的主文件名、后缀名
end
%%%%%%%%%%%%%%循环采集、保存图像
vid=videoinput('winvideo');
imaqnum=10; %采集帧数
for k=1:imaqnum;
start(vid);
aqdata1=getdata(vid,1);
%先保存、再显示
fullpath=[pathname,infname,num2str(k),insuffix]; %保存路径
imwrite(aqdata1,fullpath); %不知道此处为何不能带上'Quality'参数
imshow(aqdata1);
pause(2); %采集频率2s/次
k=k+1;
end
%%%%%%%%%%%%%%循环采集、保存图像