LFCache.tcc 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include "vislearning/features/localfeatures/LFCache.h"
  2. #include <iostream>
  3. #include <fstream>
  4. #include "vislearning/baselib/Globals.h"
  5. #include "core/basics/StringTools.h"
  6. #include "core/basics/FileMgt.h"
  7. #include "core/vector/VVector.h"
  8. namespace OBJREC {
  9. template <class ImageClass>
  10. int LFCache::getDescriptorsTemplate ( const ImageClass & img, NICE::VVector & positions, NICE::VVector & descriptors ) const
  11. { std::string filename = Globals::getCacheFilename( cachedir, cachemode );
  12. std::string filename_desc = filename + ".desc";
  13. std::string filename_pos = filename + ".key";
  14. std::ifstream fdesc( filename_desc.c_str());
  15. std::ifstream fpos( filename_pos.c_str());
  16. if(fdesc.fail() || fpos.fail())
  17. {
  18. //berechne und schreibe
  19. lf->getDescriptors(img, positions, descriptors);
  20. descriptors.save ( filename_desc, descFormat );
  21. positions.save ( filename_pos, NICE::VVector::FILEFORMAT_LINE );
  22. }
  23. else
  24. {
  25. descriptors.setBufSize(lf->getDescSize());
  26. descriptors.read ( filename_desc, descFormat );
  27. positions.read ( filename_pos, NICE::VVector::FILEFORMAT_LINE );
  28. }
  29. return 1;
  30. }
  31. }