diff --git a/examples/Demo.cpp b/examples/Demo.cpp index 5cf4a152d0b568a1a20207a0e290d443ddb354ca..8f5f13fa5db368e1f669be0d9a8fd39ec57146cd 100644 --- a/examples/Demo.cpp +++ b/examples/Demo.cpp @@ -2,8 +2,7 @@ bgs_demo -i ../../dataset/video.tar -a 100 -o ../../output -c ../../config/centerConfigFile.xml -p ../../config/camParam.xml TODO -> input = tar of mp4s? -> amount = ??? number of mp4s?? +> input = tar of images! #### Background Subtraction Methods ##### @@ -88,7 +87,6 @@ e) save the remaining centroids for a frame to file void my_handler(int signum); vector<char> copyDataInBuffer(struct archive *aw); int toFrameNumber(string filename); //! convert our actual jpg file number to framenumber -void init(); void read_camParamFile(); void read_centerFile(); void libArchive_init(); @@ -114,9 +112,11 @@ struct archive_entry *entry; int g_badSignalFlagAbort = 0; Scalar color_red( 0,0,255,255 ); +bool testMode; namespace error { enum { + argument_parse_error, libarchive_file, unexpected_frame_number, file_not_found, @@ -156,11 +156,12 @@ void parse(int argc, char** argv) { const String keys = "{help h usage ? || " + String(argv[0]) + " -i=in.tar -a=10 -c=center.xml -o=outPath -p=camparam.xml }" - "{i|../input/| input tarfile/dir containing tars? }" - "{o|../output| output path / dir }" - "{a|| amount of files/frames }" - "{p|../config/camparam.yml| camera parameter file }" - "{c|../config/center.xml| exact center xml-conf file }" + "{i input|../input/| input tarfile/dir containing tars? }" + "{o output|../output| output path / dir }" + "{a amount|| amount of frames }" + "{p param|../config/camparam.yml| camera parameter file }" + "{c center|../config/center.xml| exact center xml-conf file }" + "{t testMode|false|test mode for debugging purposes. eg. only process 10 frames}" ; CommandLineParser parser(argc, argv, keys); @@ -178,26 +179,20 @@ void parse(int argc, char** argv) camParamFile = parser.get<String>("p"); centerFile = parser.get<String>("c"); + if (parser.has("testMode")) + testMode = parser.get<bool>("t"); + if (!parser.check()) { parser.printErrors(); - exit(1); + exit(error::argument_parse_error); } std::cout << "amountFiles: " << amountFiles << std::endl; + std::cout << "testMode: " << testMode << std::endl; checkFiles({{"camParamFile",camParamFile}, {"centerFile",centerFile}, {"outputDir",outputDir}, {"inputFile",inputFile}}); } -void init() -{ - signal(SIGUSR1, my_handler); - srand (time(NULL)); //init the random number generator - - read_camParamFile(); - read_centerFile(); - libArchive_init(); -} - void read_camParamFile() { FileStorage fs(camParamFile, FileStorage::READ); @@ -241,7 +236,7 @@ void libArchive_init() { int flags = ARCHIVE_EXTRACT_TIME; // see https://linux.die.net/man/3/archive_write_disk for more flags const char *filename = inputFile.c_str(); //XXX needed? - // const char *filename = "testFile"; //XXX needed? + // "testFile" || "data_sized.tar" archive = archive_read_new(); ext = archive_write_disk_new(); @@ -263,26 +258,26 @@ void libArchive_init() int main(int argc, char * argv[]) { - parse(argc, argv); - init(); - cout << "Using OpenCV " << CV_MAJOR_VERSION << "." << CV_MINOR_VERSION << "." << CV_SUBMINOR_VERSION << endl; cout << "Using processcenter " << PROCESS_CENTER_VERSION_MAJOR << "." << PROCESS_CENTER_VERSION_MINOR << "." << PROCESS_CENTER_VERSION_MINOR_FIXES << endl << endl; + signal(SIGUSR1, my_handler); + srand (time(NULL)); //init the random number generator + + parse(argc, argv); + read_camParamFile(); + read_centerFile(); + libArchive_init(); // IBGS *bgs = new FrameDifference; IBGS *bgs = new PixelBasedAdaptiveSegmenter; // TODO - int ret=system( "echo 'sleep a bit... ' && sleep 12" ); - exit(ret); - cout << "a) process all frames " << endl; - int everyPic= 60*5; - //string fileName; - int frameCounter=0; + int everyPic = 60*5; + int frameCounter = 0; int myFileTarWriterHeaderCounter = 0; int frameCounterOld = -1; int r = -1; @@ -316,9 +311,10 @@ int main(int argc, char * argv[]) // get filename const char *fileNamePtr = archive_entry_pathname(entry); string filename(fileNamePtr,strlen(fileNamePtr) ); - //cout << "fileName: " << filename << endl; + cout << "fileName: " << filename << endl; // convert it to a framenumber frameCounter = toFrameNumber(filename); + cout << "frameCounter: " << frameCounter << endl; if(frameCounterOld>frameCounter) { @@ -593,7 +589,8 @@ int main(int argc, char * argv[]) if(g_badSignalFlagAbort) frameCounter = amountFiles; // abort - //if(frameCounter>10)exit(0); //the test abort function + if(testMode && frameCounter>10) + exit(0); }//end for ever loop diff --git a/examples/run_demo.sh b/examples/run_demo.sh index e5bf616808f805ac6168218f9222e9027a509c20..66232b7b0c342a58b4417fb1ce2fc7cd97aaadc5 100755 --- a/examples/run_demo.sh +++ b/examples/run_demo.sh @@ -1,11 +1,11 @@ #!/bin/bash # ./build/bgs_demo -a=40 -p=../config/2019-10-15-d4-calibration-parameter-n500.xml -o=../output -c=../config/camera_center_d3.xml -./build/bgs_demo -i=../input/rec11983200track.mp4 -a=40 -p=../config/2019-10-15-d4-calibration-parameter-n500.xml -o=../output -c=../config/camera_center_d3.xml +./build/bgs_demo -i=../input/rec12345678p.tar -a=4 -p=../config/2019-10-15-d4-calibration-parameter-n500.xml -o=../output -c=../config/camera_center_d3.xml # -i data_sized.tar (not gzipped) - #multiple tar'ed videos? - # looking for sth like: rec1235678p/ +# multiple tar'ed videos? +# looking for sth like: rec1235678p/ # -a ?