该代码通过Matlab中的网络摄像头实时处理视频。对于每一帧,我执行一些操作,最终结果是'度'。在实时视频采集中存储最后帧的信息MATLAB
我需要存储度数的结果,比方说最后15帧,并检查它们是否都在相同的范围内(例如50到80度之间),所有这些在视频仍在运行时。但我想删除以前的那些为了节省内存(因为它是视频采集它可以永远运行),或者如果不可能,我怎么能总是比较过去的15帧?
function DetectTarget2()
clc;imaqreset;close all;
try
% For linux
Vid = videoinput('linuxvideo', 1);
catch
try
% For mac
Vid = videoinput('macvideo', 1);
catch
errordlg('No webcam available');
end
end
set(Vid,'FramesPerTrigger',1); %capture 1 frame every time Vid is triggered
set(Vid,'TriggerRepeat',Inf); %infinite amount of triggers
set(Vid,'ReturnedColorSpace','RGB');
triggerconfig(Vid, 'Manual'); %trigger Vid manually within program
t = timer('TimerFcn',@dispim, 'Period', 0.04,...
'executionMode','fixedRate');
function dispim(~,~)
trigger(Vid)%trigger Vid to capture image
im=getdata(Vid,1);
detector = vision.CascadeObjectDetector('Cascade1Matlab.xml');
bbox = step(detector, im);
% CALCULATIONS
degrees=result;
end
end
你解决了你的问题吗?如果我的答案解决了您的问题,我会很高兴,如果它可以被标记为解决方案,并可能收到upvote。如果没有,我会有兴趣听到你的问题的一些额外的解释或为什么我的答案不能解决你的问题。 – Trilarion 2015-02-12 13:08:08
噢,是的,我非常抱歉,前几天当我遇到互联网连接问题时我正在做这件事,之后我完全忘记了。非常感谢! – Zynk 2015-02-12 17:01:15