Exception handling 为什么';当图像采集工具箱丢失帧时,是否在Matlab中尝试/捕获工作?
我正在使用Matlab的图像采集工具箱通过千兆以太网采集高速视频。我在掉框方面遇到了一些问题,但这不是这个问题的重点。我真正想做的是告诉Matlab在遇到掉帧错误后继续运行脚本 为此,我使用了try/catch语句,但它就是不起作用。这是我的代码,保留了一些有关设置相机和使用数据的细节:Exception handling 为什么';当图像采集工具箱丢失帧时,是否在Matlab中尝试/捕获工作?,exception-handling,try-catch,matlab,Exception Handling,Try Catch,Matlab,我正在使用Matlab的图像采集工具箱通过千兆以太网采集高速视频。我在掉框方面遇到了一些问题,但这不是这个问题的重点。我真正想做的是告诉Matlab在遇到掉帧错误后继续运行脚本 为此,我使用了try/catch语句,但它就是不起作用。这是我的代码,保留了一些有关设置相机和使用数据的细节: %% setting up camera while(1) % continue acquiring data forever while(vidObj.FramesAvailable <
%% setting up camera
while(1)
% continue acquiring data forever
while(vidObj.FramesAvailable < vidObj.FramesPerTrigger)
% wait until we're ready to get the data
try
pause(.1)
catch exception
disp "i got an error"
end
end
% get the data
[img, t] = getdata(vidObj);
%% do something with the data
%% ...
end
您可以看到,错误发生在我们等待收集数据时(“pause”语句),该语句位于try块内,但由于未打印调试消息且程序停止,因此未正确捕获异常
如何让Matlab观察try/catch结构,并在发生此错误后继续操作?我找到了答案。错误消息不是真正的错误,而是更多的警告。执行不会停止。然而,vidObj停止收集帧,我的代码一直循环,等待收集足够的帧 您可以按如下方式插入此条件的检查:
% wait until enough frames are available
while(vidObj.FramesAvailable < vidObj.FramesPerTrigger)
pause(.1)
if strcmp(vidObj.Running, 'off')
% It has stopped running, probably because frames were dropped
start(vidObj)
end
end
%等待足够的帧可用
while(vidObj.FramesAvailable
现在,在删除帧时,对象将重新启动,并继续获取。显然,丢失的帧无法恢复,因此视频中会有一个间隙。因此,我非常确定
暂停时实际上没有发生错误。vidObj正在后台等待,当暂停发生时,它有机会自行运行,而此时错误发生。您必须在vidObj中找到出错的实际代码。我希望这有帮助…我想你可能是对的,但是vidObj的代码被隐藏在ImageAcquisitionToolbox的某个地方。我甚至不知道从哪里开始寻找,他们甚至可能没有提供源代码。
% wait until enough frames are available
while(vidObj.FramesAvailable < vidObj.FramesPerTrigger)
pause(.1)
if strcmp(vidObj.Running, 'off')
% It has stopped running, probably because frames were dropped
start(vidObj)
end
end