我的问题是我如何从我的网络摄像头获取实时快照,并且只在有动作时保存图像,我想保存几张图像,即每当有动作时图像不会覆盖,以便最后我会能够看到各种被捕获的动作
答案 0 :(得分:0)
我能够为我的问题提出一个简单的解决方案,如下所示;它仅在有动作时保存图像并且还添加时间戳
clear;
clc;
vid = videoinput('winvideo', '1');
set(vid, 'ReturnedColorSpace', 'RGB');
start(vid)
%preview(vid)
while true;
img = getsnapshot(vid);
pause(2)
img1 = getsnapshot(vid);
img12 = rgb2gray(img1);
img13 = rgb2gray(img);
diff1 =sum(sum(img12 - img13));
if diff1>100000;
display ('motion')
counter = 1;
baseDir = 'H:\';
fname = [baseDir ,'Wysla_', num2str((strrep(datestr(clock),':','-'))),'.jpg'];
% make a file name
while exist(fname,'file')
counter = counter + 1;
fname = [baseDir ,'Wysla_', num2str(counter),'.jpg'];
end
imwrite(img1, fname);
else
display('No motion')
end;
end
这就是全部而且非常简单我唯一可以提到的是strrep(datestr(时钟),':',' - ')这是一种节约方式图像时间标记,因为日期字符串中有半冒号,strrep()用连字符或其他任何东西重放它们
av fun。