Matlab 如何在不重新初始化跟踪的情况下更改点跟踪器的属性?

Matlab 如何在不重新初始化跟踪的情况下更改点跟踪器的属性?,matlab,computer-vision,tracking,video-processing,matlab-cvst,Matlab,Computer Vision,Tracking,Video Processing,Matlab Cvst,我正在使用点跟踪器,我知道我可以使用以下方法设置跟踪器的属性: tracker = vision.PointTracker('NumPyramidLevels',3,'MaxBidirectionalError', 2, 'MaxIterations',30,'BlockSize',[5 5]); initialize(tracker, points.Location, objectFrame); 然后采用分步跟踪法,跟踪效果良好 我的问题是如何在跟踪器工作期间使这些属性动态,我在while

我正在使用点跟踪器,我知道我可以使用以下方法设置跟踪器的属性:

tracker = vision.PointTracker('NumPyramidLevels',3,'MaxBidirectionalError', 2, 'MaxIterations',30,'BlockSize',[5 5]);
initialize(tracker, points.Location, objectFrame);
然后采用分步跟踪法,跟踪效果良好

我的问题是如何在跟踪器工作期间使这些属性动态,我在while station中使用了相同的方法,如下所示:

while ~isDone(videoFileReader)
    frame = step(videoFileReader);
    [points, validity,scores] = step(tracker, frame);
tracker = vision.PointTracker('NumPyramidLevels',3,'MaxBidirectionalError', 2, 'MaxIterations',30,'BlockSize',[5 5]);
initialize(tracker, points, objectFrame);
end

但是这里的问题是跟踪器再次初始化!但是我需要继续使用prevouis fram状态,而不需要再次初始化跟踪。

不幸的是,简短的回答是“否”


vision.PointTracker
是一个系统对象,是一种特殊的MATLAB类。在系统对象中,属性可以是可调的或不可调的。只能在首次调用对象的
步骤
方法之前更改不可调属性。目前,vision.PointTracker的所有属性都是不可调的,这意味着您无法在循环内更改它们的值。

不幸的是,简短的回答是“否”


vision.PointTracker
是一个系统对象,是一种特殊的MATLAB类。在系统对象中,属性可以是可调的或不可调的。只能在首次调用对象的
步骤
方法之前更改不可调属性。目前,
vision.PointTracker
的所有属性都是不可调的,这意味着您无法在循环中更改它们的值。

您想更改这些属性的原因是什么?@Dima我想更改MaxBidirectionalError的参数,以便在跟踪过程中更改,因为我需要在特征数量较少时最大化误差,而当特征数量较多时,我想减少误差,所以我需要确保跟踪时不会丢失特征哦,我明白了。。。当剩下的功能太少时,您最好找出一种检测更多功能的方法…我想使用设定点,但这需要用户手动重新选择对象您跟踪的是哪种对象?如果它是一张脸,您可以使用
vision.CascadeObjectDetector
自动重新检测它。。。请参见此示例:是否有更改这些属性的原因?@Dima我想在跟踪过程中更改MaxBidirectionalError的参数,因为我需要在特征数量较少时最大化错误,而在特征数量较多时,我想减少错误,所以我需要确保跟踪时不会丢失功能哦,我明白了。。。当剩下的功能太少时,您最好找出一种检测更多功能的方法…我想使用设定点,但这需要用户手动重新选择对象您跟踪的是哪种对象?如果它是一张脸,您可以使用
vision.CascadeObjectDetector
自动重新检测它。。。看这个例子:谢谢你的回答谢谢你的回答