lihongtao
2017-06-29 f37e19a794bf62257fb0c4bcb80391f3194f6c68
FaceServer/STFaceCache.cpp
@@ -341,3 +341,59 @@
   FDP_FaceDetectResult result(0, 0, int(c * 1000));
   return result;
}
void STFaceCache::search(const STFaceImage& img, fdr_vec_t& topResult)
{
   stface_ctx_map_t& dbContext(*(stface_ctx_map_t*)_dbContext);
   STFaceCacheContext& cacheContext(*(STFaceCacheContext*)_cacheContext);
   /*
   for(stface_ctx_map_t::iterator iterCtx = dbContext.begin(); iterCtx != dbContext.end(); ++iterCtx)
   {
      STFaceDBContext& ctx(iterCtx->second);
      if (!ctx.dbLoadOK)
      {
         LOG_WARN << "dbLoadOK return false" << LOG_ENDL;
         continue;
      }
      top_idx_score_vect_t result;
      if (!stface_search_db(ctx.handles, img, result))
      {
         LOG_WARN << "stface_search_db return false" << LOG_ENDL;
         continue;
      }
      if (result.empty())
      {
         LOG_INFO << "stface_search_db return empty" << LOG_ENDL;
         continue;
      }
      for(top_idx_score_vect_t::iterator it = result.begin(); it != result.end(); ++it)
      {
         if(topResult.empty())
            topResult.push_back(FDP_FaceDetectResult(ctx.dbid, it->idx, it->score * 1000));
         int16_t new_confidence = it->score * 1000;
         else if(new_confidence > topResult.rbegin()->confidence)
         {
            while(topResult.size() > 4)
               topResult.pop_back();
            for(fdr_vec_t::reverse_iterator rtTR = topResult.rbegin() + 1; rtTR != topResult.rend(); ++rtTR)
            {
               if(new_confidence < rtTR->confidence)
                  topResult.insert(rtTR, FDP_FaceDetectResult(ctx.dbid, it->idx, new_confidence));
            }
         }
      }
      //LOGP(INFO, "stface_search_db return dbid=%d, idx=%d, score=%f", img.db_id, result[0].idx, result[0].score);
   }
   */
   topResult.push_back(FDP_FaceDetectResult(1, 2, 3));
   topResult.push_back(FDP_FaceDetectResult(-1, 2, 4));
   topResult.push_back(FDP_FaceDetectResult(1, 6, 5));
   return FDP_FaceDetectResult(img.db_id, result[0].idx, result[0].score * 1000);
}