Blame view

3rdparty/opencv-4.5.4/modules/video/src/tracking/detail/tracker_sampler.cpp 1.52 KB
f4334277   Hu Chunming   提交3rdparty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  // This file is part of OpenCV project.
  // It is subject to the license terms in the LICENSE file found in the top-level directory
  // of this distribution and at http://opencv.org/license.html.
  
  #include "../../precomp.hpp"
  
  #include "opencv2/video/detail/tracking.detail.hpp"
  
  namespace cv {
  namespace detail {
  inline namespace tracking {
  
  TrackerSampler::TrackerSampler()
  {
      blockAddTrackerSampler = false;
  }
  
  TrackerSampler::~TrackerSampler()
  {
      // nothing
  }
  
  void TrackerSampler::sampling(const Mat& image, Rect boundingBox)
  {
      clearSamples();
  
      for (size_t i = 0; i < samplers.size(); i++)
      {
          CV_DbgAssert(samplers[i]);
          std::vector<Mat> current_samples;
          samplers[i]->sampling(image, boundingBox, current_samples);
  
          //push in samples all current_samples
          for (size_t j = 0; j < current_samples.size(); j++)
          {
              std::vector<Mat>::iterator it = samples.end();
              samples.insert(it, current_samples.at(j));
          }
      }
  
      blockAddTrackerSampler = true;
  }
  
  bool TrackerSampler::addTrackerSamplerAlgorithm(const Ptr<TrackerSamplerAlgorithm>& sampler)
  {
      CV_Assert(!blockAddTrackerSampler);
      CV_Assert(sampler);
  
      samplers.push_back(sampler);
      return true;
  }
  
  const std::vector<Ptr<TrackerSamplerAlgorithm>>& TrackerSampler::getSamplers() const
  {
      return samplers;
  }
  
  const std::vector<Mat>& TrackerSampler::getSamples() const
  {
      return samples;
  }
  
  void TrackerSampler::clearSamples()
  {
      samples.clear();
  }
  
  }}}  // namespace cv::detail::tracking