#include <ctime>
#include <iomanip>
+// needed for _mkdir
+#if defined(_WIN32)
+#include <direct.h>
+#endif
+
#include "masking.h"
#include "stickletrack.h"
#include "tracking.h"
cout << "Using " << Props.basedir << " for data output." << endl;
}
+bool isWindowClosed (const char* name) {
+ if ( cvGetWindowHandle(name) == NULL )
+ return true;
+ else
+ return false;
+}
+
void beforeExit() {
cout << "Exitting ..." << endl;
alles << framenum << " : " << fixed << (framenum)/(double)Props.fps << "s : +" << (double)moresleep/Props.fps << "ms";
string text = alles.str();
- int fontFace = FONT_HERSHEY_SCRIPT_SIMPLEX;
+ int fontFace = FONT_HERSHEY_DUPLEX;
- double fontScale = Props.diagonal/1000.0;
- int thickness = 3;
+ double fontScale = Props.width / 600.0;
+ int thickness = Props.width / 250.0;
int baseline=0;
Size textSize = getTextSize(text, fontFace,
fontScale, thickness, &baseline);
- Point textOrg(10, 10 + textSize.height);
+ Point textOrg(Props.width*0.01, Props.width*0.01 + textSize.height);
rectangle(mContours, Point(0, 0),
- Point(Props.width, 20+textSize.height),
+ Point(Props.width, Props.width*0.02 + textSize.height),
Scalar(0,0,255), -1);
putText(mContours, text, textOrg, fontFace, fontScale,
char filename[200];
bool pleaseExit = false;
- namedWindow("original", CV_WINDOW_KEEPRATIO);
+ namedWindow("stickletrack_original", CV_WINDOW_KEEPRATIO);
Mat frame, origframe, combinedmask;
Props.totframes = capture.get(CV_CAP_PROP_FRAME_COUNT);
Props.diagonal = sqrt( pow(Props.width, 2) + pow(Props.height, 2) );
+ if ( Props.width == 0 || Props.height == 0 || Props.fps == 0 || Props.totframes == 0 ) {
+ cerr << "Something got wrong while reading video-file info!" << endl;
+ cerr << "Width: " << Props.width << endl;
+ cerr << "Height: " << Props.height << endl;
+ cerr << "FPS: " << Props.fps << endl;
+ cerr << "Total frames: " << Props.totframes << endl;
+ exit(1);
+ }
+
Mat frameintime[BACKSECONDS*Props.fps];
tagintime = new vector<tag>*[BACKSECONDS*Props.fps];
openTanjaLog();
masking_init();
- tracking_init();
-
- cvSetMouseCallback("contours_picture", mouseTracking, 0);
+ tracking_init(&mouseTracking);
capture.set(CV_CAP_PROP_POS_FRAMES, 0);
gotoframe = framenum + 1;
- imshow("original", origframe/255.0);
+ if ( ! isWindowClosed("stickletrack_original") )
+ imshow("stickletrack_original", origframe/255.0);
}
drawTimes(tracking_getFrame());
circle( tracking_getFrame(), Point2f(tags[nearestTags[0]].x, tags[nearestTags[0]].y), Props.diagonal / 100.0, Scalar(0,0,255), -1, 8 );
}
- tracking_showFrame();
+ if ( tracking_showFrame() )
+ pleaseExit = true;
char key;
cerr << "Failed to open a video device or video file!\n" << endl;
return 1;
}
-
- cout << "Exit with q if you want to save your data!!!" << endl;
return process(capture);
}