> ## Content Index
> Fetch the complete content index at: https://yinguobing.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# 重新设定OpenCV Tracker的跟踪对象
- URL: https://yinguobing.com/blog/re-config-object-tracked-in-opencv-tracker/
- Published: 2017-04-17T08:09:21.000Z
- Updated: 2019-09-30T00:34:45.000Z
- Description: OpenCV的Tracking模块实现了6种不同的跟踪算法：BOOSTING，MIL，KCF，TLD，MEDIANFLOW和GOTURN。本文展示了当希望换一个对象跟踪的时候，需要采取的可行方法。
- Author: 尹国冰
- Tags: OpenCV

OpenCV附加模块[opencv\_contrib](https://github.com/opencv/opencv%5Fcontrib?ref=yinguobing.com)下提供了一个特殊的Tracking模块。该模块实现了6种不同的跟踪算法：BOOSTING，MIL，KCF，TLD，MEDIANFLOW和GOTURN。[Object Tracking using OpenCV (C++/Python)](http://www.learnopencv.com/object-tracking-using-opencv-cpp-python/?ref=yinguobing.com)这篇文章中详细对这几种方法进行了介绍与比较。同时官方也提供了[示例代码](https://github.com/opencv/opencv%5Fcontrib/blob/master/modules/tracking/samples/tracker.cpp?ref=yinguobing.com)演示如何使用这个模块。

示例代码对视频中的一个对象进行了跟踪，但是当前面临的问题是，当希望换一个对象跟踪的时候，以下两种做法都是无效的：

1. 将新对象的`Rect2d`直接传递给update()函数；
2. 再次使用tracker的`init()`函数。

这个问题在[这篇文中](http://www.learnopencv.com/object-tracking-using-opencv-cpp-python/?ref=yinguobing.com)的评论区也有讨论。

解决办法其实也不复杂：重新创建一个Tracker对象。假设你之前创建的对象为`tracker`，那么重新使用create函数建立一个新对象即可：

```
tracker = Tracker::create( "KCF" );

```