diff --git a/Demo.cpp b/Demo.cpp index ce58d0856b7787a4ca2b6f436c235b7e89448c6b..9a469d1e6b4c78b98cd41df3cd0896e0c6f97484 100644 --- a/Demo.cpp +++ b/Demo.cpp @@ -1,6 +1,5 @@ /* -./bgs_demo -i test45/ -a 100 -o test45/results/ -based on original demo.cpp +./bgs_demo -i test45/ -a 100 -o test45/results */ //cpp c @@ -20,6 +19,9 @@ based on original demo.cpp #include <string.h> #include <unistd.h> +//cpp 11X +#include <regex> + #define PROCESS_CENTER_VERSION_MAJOR 2 #define PROCESS_CENTER_VERSION_MINOR 0 @@ -46,6 +48,9 @@ bool cmdOptionExists(char** begin, char** end, const std::string& option); std::vector<char> copyDataInBuffer(struct archive *aw); +//! we convert our actual jpg file number to framenumber +int toFrameNumber(std::string filename); + int main(int argc, char * argv[]) { signal(SIGUSR1, my_handler); @@ -55,12 +60,12 @@ int main(int argc, char * argv[]) //!** parse programm input****************/ if(cmdOptionExists(argv, argv+argc, "-h")) { - cout <<" error: please use command as\n./bgs_demo -i pathToInputDir -a amountOfJpgFiles -c exactCenterConfFile.xml -o outPutPath -p camparameterFile.xml"<<endl; + cout <<" error: please use command as\n./bgs_demo -i inputTarFile -a amountOfJpgFiles -c exactCenterConfFile.xml -o outPutPath -p camparameterFile.xml"<<endl; return EXIT_FAILURE; } if(!cmdOptionExists(argv, argv+argc, "-i")||!cmdOptionExists(argv, argv+argc, "-a")||!cmdOptionExists(argv, argv+argc, "-o") ||!cmdOptionExists(argv, argv+argc, "-p")) { - cout <<" error: please use command as\n./bgs_demo -i pathToInputDir -a amountOfJpgFiles -c exactCenterConfFile.xml -o outPutPath -p camparameterFile.xml"<<endl; + cout <<" error: please use command as\n./bgs_demo -i inputTarFile -a amountOfJpgFiles -c exactCenterConfFile.xml -o outPutPath -p camparameterFile.xml"<<endl; return EXIT_FAILURE; } @@ -246,6 +251,7 @@ int main(int argc, char * argv[]) int everyPic= 60*5; //std::string fileName; int frameCounter=0; + int frameCounterOld = -1; vector<string> myFileErrorList;//list for pure io error vector<string> myFileListNoContour; //list for no contours found; vector<string> myFileListAfterContourSelection; //list for no contours found after selection; @@ -276,8 +282,17 @@ int main(int argc, char * argv[]) const char *fileNamePtr = archive_entry_pathname(entry); std::string filename(fileNamePtr,strlen(fileNamePtr) ); //cout << "fileName: "<< filename <<endl; + //we convert it to a framenumber + frameCounter = toFrameNumber(filename); + + if(frameCounterOld>frameCounter) + { + cerr <<" error during read in the file number, we do have non montonic order, will abort"; + exit(1); + } + + frameCounterOld = frameCounter; - //TODO we should test what file we have, this filenumber n = n - 1 ?? r = archive_write_header(ext, entry); if (r != ARCHIVE_OK) { @@ -300,8 +315,6 @@ int main(int argc, char * argv[]) //we read the image buffer as a jpg picture and decode it Mat img_input = imdecode(Mat(vec), 1); - - // //we define the type better to prevent error // fileName = std::string(inputFile + TToolBox::getFileName(frameCounter)); // cv::String fileNameCV(fileName); @@ -561,6 +574,8 @@ int main(int argc, char * argv[]) if(g_badSignalFlagAbort) frameCounter = amountFiles; //we abort + if(frameCounter>10)exit(0); //the test abort function + }//end for ever loop //finishing time @@ -591,9 +606,9 @@ int main(int argc, char * argv[]) fs2 << "fileErrorNoContoursAfterSelections" << myFileListAfterContourSelection; -// //we write error list no contours found in file -// cout <<"amount of corrupted jpg files: "<< myFileListCorrupted.size()<<endl; -// fs2 << "fileErrorIOcorruptFiles" << myFileListCorrupted; + // //we write error list no contours found in file + // cout <<"amount of corrupted jpg files: "<< myFileListCorrupted.size()<<endl; + // fs2 << "fileErrorIOcorruptFiles" << myFileListCorrupted; //the bgs related things delete bgs; @@ -675,3 +690,20 @@ bool cmdOptionExists(char** begin, char** end, const std::string& option) { return std::find(begin, end, option) != end; } + +int toFrameNumber(std::string filename) +{ + int retVal = -1; + + //we cut out all non needed substrings + filename = regex_replace(filename, regex("/"), ""); + filename = regex_replace(filename, regex("data_sized"), ""); + filename = regex_replace(filename, regex("jpg"), ""); + filename = regex_replace(filename, regex("\\."), ""); + + retVal = std::stoi( filename ); + + //cout <<"filename out:" << filename << " number: "<< retVal << endl; + + return retVal; +}