void ImportGPSDataGPGGAFiles () { KKStrListPtr files = osGetListOfFiles ("952X-GPGGA*.Raw"); if ((files == NULL) || (files->QueueSize () < 1)) { cerr << endl << endl << "ImportGPSDataGPGGAFiles ***ERROR*** No Files Found" << endl << endl; delete files; files = NULL; return; } KKStrList::iterator idx; for (idx = files->begin (); idx != files->end (); idx++) { ImportGPSDataGPGGA (**idx); } delete files; } /* ImportGPSDataGPGGAFiles */
FeatureVectorListPtr FeatureFileIO::FeatureDataReSink (FactoryFVProducerPtr _fvProducerFactory, const KKStr& _dirName, const KKStr& _fileName, MLClassPtr _unknownClass, bool _useDirectoryNameForClassName, MLClassList& _mlClasses, VolConstBool& _cancelFlag, bool& _changesMade, KKB::DateTime& _timeStamp, RunLog& _log ) { _changesMade = false; _timeStamp = DateTime (); if (_unknownClass == NULL) _unknownClass = MLClass::GetUnKnownClassStatic (); KKStr className = _unknownClass->Name (); _log.Level (10) << "FeatureFileIO::FeatureDataReSink dirName: " << _dirName << endl << " fileName: " << _fileName << " UnKnownClass: " << className << endl; KKStr fullFeatureFileName = osAddSlash (_dirName) + _fileName; bool successful = true; KKStr fileNameToOpen; if (_dirName.Empty ()) fileNameToOpen = _fileName; else fileNameToOpen = osAddSlash (_dirName) + _fileName; bool versionsAreSame = false; FeatureVectorListPtr origFeatureVectorData = LoadFeatureFile (fileNameToOpen, _mlClasses, -1, _cancelFlag, successful, _changesMade, _log); if (origFeatureVectorData == NULL) { successful = false; origFeatureVectorData = _fvProducerFactory->ManufacturFeatureVectorList (true); } if (_cancelFlag) { delete origFeatureVectorData; origFeatureVectorData = NULL; return _fvProducerFactory->ManufacturFeatureVectorList (true); } FeatureVectorListPtr origFeatureData = NULL; if (successful && (&typeid (*origFeatureVectorData) == _fvProducerFactory->FeatureVectorListTypeId ()) && ((*(origFeatureVectorData->FileDesc ())) == (*(_fvProducerFactory->FileDesc ()))) ) { origFeatureData = origFeatureVectorData; } else { origFeatureData = _fvProducerFactory->ManufacturFeatureVectorList (true); delete origFeatureVectorData; origFeatureVectorData = NULL; } KKStr fileSpec = osAddSlash (_dirName) + "*.*"; KKStrListPtr fileNameList = osGetListOfFiles (fileSpec); if (!fileNameList) { // There are no Image Files, so we need to return a Empty List of Image Features. if (origFeatureData->QueueSize () > 0) _changesMade = true; delete origFeatureData; origFeatureData = NULL; return _fvProducerFactory->ManufacturFeatureVectorList (true); } FeatureVectorProducerPtr fvProducer = _fvProducerFactory->ManufactureInstance (_log); if (successful) { if (origFeatureData->Version () == fvProducer->Version ()) { versionsAreSame = true; _timeStamp = osGetFileDateTime (fileNameToOpen); } else { _changesMade = true; } } else { delete origFeatureData; origFeatureData = _fvProducerFactory->ManufacturFeatureVectorList (true); } origFeatureData->SortByRootName (false); FeatureVectorListPtr extractedFeatures = _fvProducerFactory->ManufacturFeatureVectorList (true); extractedFeatures->Version (fvProducer->Version ()); fileNameList->Sort (false); KKStrList::iterator fnIDX; fnIDX = fileNameList->begin (); // fileNameList KKStrPtr imageFileName; kkuint32 numImagesFoundInOrigFeatureData = 0; kkuint32 numOfNewFeatureExtractions = 0; for (fnIDX = fileNameList->begin (); (fnIDX != fileNameList->end ()) && (!_cancelFlag); ++fnIDX) { imageFileName = *fnIDX; // pv414-_002_20140414-162243_02068814-1261.bmp KKStr rootName = osGetRootName (*imageFileName); if (rootName == "pv414-_002_20140414-162243_02068814-1261") cout << "Stop Here." << endl; bool validImageFileFormat = SupportedImageFileFormat (*imageFileName); if (!validImageFileFormat) continue; bool featureVectorCoputaionSuccessful = false; FeatureVectorPtr origFV = origFeatureData->BinarySearchByName (*imageFileName); if (origFV) numImagesFoundInOrigFeatureData++; if (origFV && versionsAreSame) { featureVectorCoputaionSuccessful = true; if (_useDirectoryNameForClassName) { if (origFV->MLClass () != _unknownClass) { _changesMade = true; origFV->MLClass (_unknownClass); } } else if ((origFV->MLClass ()->UnDefined ()) && (origFV->MLClass () != _unknownClass)) { _changesMade = true; origFV->MLClass (_unknownClass); } extractedFeatures->PushOnBack (origFV); origFeatureData->DeleteEntry (origFV); } else { // We either DON'T have an original image or versions are not the same. KKStr fullFileName = osAddSlash (_dirName) + (*imageFileName); FeatureVectorPtr fv = NULL; try { RasterPtr image = ReadImage (fullFileName); if (image) fv = fvProducer->ComputeFeatureVector (*image, _unknownClass, NULL, 1.0f, _log); delete image; image = NULL; if (fv) featureVectorCoputaionSuccessful = true; else featureVectorCoputaionSuccessful = false; } catch (...) { _log.Level (-1) << endl << endl << "FeatureDataReSink ***ERROR***" << endl << " Exception occurred calling constructor 'ComputeFeatureVector'." << endl << endl; featureVectorCoputaionSuccessful = false; fv = NULL; } if (!featureVectorCoputaionSuccessful) { _log.Level (-1) << " FeatureFileIOKK::FeatureDataReSink *** ERROR ***, Processing Image File[" << imageFileName << "]." << endl; delete fv; fv = NULL; } else { _changesMade = true; fv->ExampleFileName (*imageFileName); _log.Level (30) << fv->ExampleFileName () << " " << fv->OrigSize () << endl; extractedFeatures->PushOnBack (fv); numOfNewFeatureExtractions++; if ((numOfNewFeatureExtractions % 100) == 0) cout << numOfNewFeatureExtractions << " Images Extracted." << endl; } } } if (numImagesFoundInOrigFeatureData != extractedFeatures->QueueSize ()) _changesMade = true; extractedFeatures->Version (fvProducer->Version ()); if ((_changesMade) && (!_cancelFlag)) { //extractedFeatures->WriteImageFeaturesToFile (fullFeatureFileName, RawFormat, FeatureNumList::AllFeatures (extractedFeatures->FileDesc ())); kkuint32 numExamplesWritten = 0; SaveFeatureFile (fullFeatureFileName, FeatureNumList::AllFeatures (extractedFeatures->FileDesc ()), *extractedFeatures, numExamplesWritten, _cancelFlag, successful, _log ); _timeStamp = osGetLocalDateTime (); } delete fvProducer; fvProducer = NULL; delete fileNameList; fileNameList = NULL; delete origFeatureData; origFeatureData = NULL; _log.Level (10) << "FeatureDataReSink Exiting Dir: " << _dirName << endl; return extractedFeatures; } /* FeatureDataReSink */
FeatureVectorListPtr FeatureFileIO::LoadInSubDirectoryTree (FactoryFVProducerPtr _fvProducerFactory, KKStr _rootDir, MLClassList& _mlClasses, bool _useDirectoryNameForClassName, VolConstBool& _cancelFlag, bool _rewiteRootFeatureFile, RunLog& _log ) { _log.Level (10) << "FeatureFileIO::LoadInSubDirectoryTree rootDir[" << _rootDir << "]." << endl; osAddLastSlash (_rootDir); KKStr featureFileName (""); KKStr fullFeatureFileName (""); if (!_rootDir.Empty ()) { featureFileName = osGetRootNameOfDirectory (_rootDir) + ".data"; fullFeatureFileName = _rootDir + featureFileName; } else { featureFileName = "Root.data"; fullFeatureFileName = "Root.data"; } MLClassPtr unKnownClass = _mlClasses.GetUnKnownClass (); if (_useDirectoryNameForClassName) { KKStr className = MLClass::GetClassNameFromDirName (_rootDir); unKnownClass = _mlClasses.GetMLClassPtr (className); } bool changesMade = false; FeatureVectorListPtr dirImages = NULL; if (_rewiteRootFeatureFile) { DateTime timeStamp; dirImages = FeatureDataReSink (_fvProducerFactory, _rootDir, featureFileName, unKnownClass, _useDirectoryNameForClassName, _mlClasses, _cancelFlag, changesMade, timeStamp, _log ); if (_useDirectoryNameForClassName) { FeatureVectorList::iterator idx; for (idx = dirImages->begin (); idx != dirImages->end (); idx++) { if ((*idx)->MLClass () != unKnownClass) { (*idx)->MLClass (unKnownClass); changesMade = true; } } if (changesMade) { KKStr fullFileName = osAddSlash (_rootDir) + featureFileName; kkuint32 numExamplesWritten = 0; bool cancel = false; bool successful = false; SaveFeatureFile (fullFileName, dirImages->AllFeatures (), *dirImages, numExamplesWritten, cancel, successful, _log ); } } } else { dirImages = _fvProducerFactory->ManufacturFeatureVectorList (true); } // Now that we have processed all image files in "rootDir", // lets process any sub-directories. KKStr dirSearchPath = osAddSlash (_rootDir) + "*.*"; KKStrListPtr subDirectories = osGetListOfDirectories (dirSearchPath); if (subDirectories) { KKStrList::iterator idx; for (idx = subDirectories->begin (); (idx != subDirectories->end () && (!_cancelFlag)); idx++) { KKStr subDirName (**idx); if (subDirName == "BorderImages") { // We ignore this director continue; } KKStr newDirPath = osAddSlash (_rootDir) + subDirName; FeatureVectorListPtr subDirExamples = LoadInSubDirectoryTree (_fvProducerFactory, newDirPath, _mlClasses, _useDirectoryNameForClassName, _cancelFlag, true, // true = ReWriteRootFeatureFile _log ); osAddLastSlash (subDirName); // We want to add the directory path to the ExampleFileName so that we can later locate the source image. for (auto fv: *subDirExamples) { KKStr newImageFileName = subDirName + fv->ExampleFileName (); fv->ExampleFileName (newImageFileName); } dirImages->AddQueue (*subDirExamples); subDirExamples->Owner (false); delete subDirExamples; subDirExamples = NULL; } delete subDirectories; subDirectories = NULL; } _log.Level (10) << "LoadInSubDirectoryTree - Done" << endl; return dirImages; } /* LoadInSubDirectoryTree */