1

我正在关注mathworks.com/help中的基于运动的多对象跟踪,Undefined variable or class "obj.reader.step"当我尝试执行 main 函数时, Matlab r2013b 给了我一个错误。我正在使用复制粘贴函数和自定义 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。这可能是视频编解码器吗?提前感谢您的帮助

4

1 回答 1

3

形成您链接到的页面顶部:

这个例子是一个函数,主体在顶部,辅助例程以嵌套函数的形式出现在下面。

换句话说,该readFrame函数是您创建obj.reader对象的函数内部的嵌套函数。或者,您可以obj.reader作为参数传入。如果您查看生成obj.reader对象 ( setupSystemObjects) 的代码,它也是一个嵌套函数,但它返回obj到外部主函数。顺便说一句,如果您想在 Matlab 编辑器中一起查看所有代码,只需edit multiObjectTracking在命令窗口中键入即可。

嵌套函数可以访问外部函数的所有变量(工作区)。这篇博客文章更详细地讨论了它们。

于 2013-12-05T01:47:24.553 回答