summaryrefslogtreecommitdiff
path: root/src/testApp.h
blob: c8db7f2b1fb2c4b6bedffc346458b2cbf4c98338 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#pragma once

#include "ofMain.h"
#include "ofxOpenCv.h"

#include "boundary.h"
#include "ofxXmlSettings.h"
#include "ofxFensterManager.h"
#include "ofxGui.h"

#define DISPLAY_FG 1
#define DISPLAY_BG 2
#define DISPLAY_DIFF 3

#define METHOD_SIMPLE 4
#define METHOD_ACCUM 5

//12-10-12
//each area will trigger 'once and once only' ?

//overall:
//
//tweak opencv stuff
//test performance

//size factor
//continuous background
//abs diff?


class guiWindow;

class testApp : public ofxFensterListener{

	public:
		void setup();
		void update();
		void draw();
		void exit();

		void keyPressed  (int key);
		void keyReleased(int key);
		void mouseMoved(int x, int y );
		void mouseDragged(int x, int y, int button);
		void mousePressed(int x, int y, int button);
		void mouseReleased(int x, int y, int button);
		void windowResized(int w, int h);
		void dragEvent(ofDragInfo dragInfo);
		void dragEvent(ofDragInfo dragInfo, ofxFenster* win);
		void gotMessage(ofMessage msg);

		ofxXmlSettings XML;
		void loadSettings(string filename);
		void saveSettings(string filename);

		ofVideoGrabber 		vidGrabber;

		int gw,gh;
		
		float				learningRate,startTime;

		cv::Mat accumulator,outmat;
		ofxCvColorImage		colorImg;
		ofxCvGrayscaleImage 	grayImage;
		ofxCvGrayscaleImage 	grayBg;
		ofxCvGrayscaleImage 	grayDiff;

		ofxCvContourFinder 	contourFinder;

		int 				mode,method;

		bool				bLearnBakground;
		bool 				flip,invert;

		guiWindow *guiWin;
		ofxPanel gui;
		ofxFloatSlider vol;
		ofxParameter<float> volume;
		ofxToggle bFlip;
		ofxToggle bInvert;
		ofxIntSlider thresh;
		ofxParameter<int> threshold;

		// register any method of any class to an event.
        // the method must provide one of the following
        // signatures:
        //     void method(ArgumentsType & args)
        //     void method(const void * sender, ArgumentsType &args)
        // ie:
        //     ofAddListener(addon.newIntEvent, this, &Class::method)
		void volumeChanged(float &v);
		void resetBG(bool &chg);

		bool                		bGrab;

		vector<boundary> boundaries;
		int selectedBoundary;
		int selectedPoint;

		vector<ofPoint> clicks;
};

class guiWindow: public ofxFensterListener{
public:
	~guiWindow();
	testApp *parent;
	void setup();
	void setParent(testApp *p);
	void draw();
};