void LaRank::Update(const MultiSample& sample, int y) { // add new support pattern SupportPattern* sp = new SupportPattern; const vector<FloatRect>& rects = sample.GetRects(); FloatRect centre = rects[y]; for (int i = 0; i < (int)rects.size(); ++i) { // express r in coord frame of centre sample FloatRect r = rects[i]; r.Translate(-centre.XMin(), -centre.YMin()); sp->yv.push_back(r); if (!m_config.quietMode && m_config.debugMode) { // store a thumbnail for each sample Mat im(kTileSize, kTileSize, CV_8UC1); IntRect rect = rects[i]; cv::Rect roi(rect.XMin(), rect.YMin(), rect.Width(), rect.Height()); cv::resize(sample.GetImage().GetImage(0)(roi), im, im.size()); sp->images.push_back(im); } } // evaluate features for each sample sp->x.resize(rects.size()); const_cast<Features&>(m_features).Eval(sample, sp->x); sp->y = y; sp->refCount = 0; m_sps.push_back(sp); ProcessNew((int)m_sps.size()-1); BudgetMaintenance(); for (int i = 0; i < 10; ++i) { Reprocess(); BudgetMaintenance(); } }