我正在关注来自mathworks.com/help的基于动态的多目标跟踪
当我尝试执行main函数时,Matlab r2013b给出了一个错误Undefined variable or class "obj.reader.step"
。我正在使用复制粘贴功能和自定义avi文件,这似乎是有效的。
代码片段是
function frame = readFrame()
frame = obj.reader.step();
end
obj正在设置的地方
obj.reader = vision.VideoFileReader('sample.avi');
obj.videoPlayer = vision.VideoPlayer('Position', [20, 400, 700, 400]);
obj.maskPlayer = vision.VideoPlayer('Position', [740, 400, 700, 400]);
obj.detector = vision.ForegroundDetector('NumGaussians', 3, ...
'NumTrainingFrames', 40, 'MinimumBackgroundRatio', 0.7);
obj.blobAnalyser = vision.BlobAnalysis('BoundingBoxOutputPort', true, ...
'AreaOutputPort', true, 'CentroidOutputPort', true, ...
'MinimumBlobArea', 400);
完整代码在链接中。我相信这是一个简单的问题,但我很长时间没有使用matlab。愿这是视频编解码器吗? 在此先感谢您的任何帮助
答案 0 :(得分:3)
形成您链接到的页面顶部:
此示例是一个函数,主体位于顶部,辅助例程的形式为nested functions。
换句话说,readFrame
函数是在您创建obj.reader
对象的函数内部的嵌套函数。或者,您可以传入obj.reader
作为参数。如果查看生成obj.reader
对象(setupSystemObjects
)的代码,它也是一个嵌套函数,但它会将obj
返回给外部main函数。顺便说一句,如果你想在Matlab编辑器中一起查看所有代码,只需在命令窗口中输入edit multiObjectTracking
。
Nested functions可以访问外部函数的所有变量(工作空间)。 This blog post更详细地讨论了它们。