diff options
Diffstat (limited to '02_rec/src')
| -rw-r--r-- | 02_rec/src/main.cpp | 17 | ||||
| -rw-r--r-- | 02_rec/src/testApp.cpp | 199 | ||||
| -rw-r--r-- | 02_rec/src/testApp.h | 42 |
3 files changed, 258 insertions, 0 deletions
diff --git a/02_rec/src/main.cpp b/02_rec/src/main.cpp new file mode 100644 index 0000000..87dc35f --- /dev/null +++ b/02_rec/src/main.cpp @@ -0,0 +1,17 @@ + +#include "testApp.h" +#include "ofMain.h" +#include "ofAppGlutWindow.h" + +//======================================================================== +int main( ){ + + ofAppGlutWindow window; + ofSetupOpenGL(&window, 1600,900, OF_FULLSCREEN); // <-------- setup the GL context + + // this kicks off the running of my app + // can be OF_WINDOW or OF_FULLSCREEN + // pass in width and height too: + ofRunApp( new testApp()); + +} diff --git a/02_rec/src/testApp.cpp b/02_rec/src/testApp.cpp new file mode 100644 index 0000000..376d357 --- /dev/null +++ b/02_rec/src/testApp.cpp @@ -0,0 +1,199 @@ +#include "testApp.h" + +//-------------------------------------------------------------- +void testApp::setup() { + + ofSetLogLevel(OF_LOG_NOTICE); + + numDevices = openNIRecorders[0].getNumDevices(); + + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + //openNIRecorders[deviceID].setLogLevel(OF_LOG_VERBOSE); + openNIRecorders[deviceID].setup(false); + openNIRecorders[deviceID].addDepthGenerator(); + openNIRecorders[deviceID].addImageGenerator(); + openNIRecorders[deviceID].setRegister(true); // this registers all the image pixels to the depth pixels + openNIRecorders[deviceID].setMirror(true); // flips the image and depth sensors + openNIRecorders[deviceID].start(); + + openNIPlayers[deviceID].setup(false); + openNIPlayers[deviceID].start(); + + filenames[deviceID]=""; + } + + isLive=true; + isRecording=false; + + verdana.loadFont(ofToDataPath("verdana.ttf"), 10); + + startSound.loadSound("tone1.wav"); + stopSound.loadSound("tone0.wav");; +} + + +string testApp::generateFileName(int cam) { + + string _root = "kinectRecord_"; + + string _timestamp = ofToString(ofGetDay()) + + ofToString(ofGetMonth()) + + ofToString(ofGetYear()) + + ofToString(ofGetHours()) + + ofToString(ofGetMinutes()) + + ofToString(ofGetSeconds()); + + string _filename = (_root + ofToString(cam)+"_"+_timestamp + ".oni"); + + return _filename; + +} + +//-------------------------------------------------------------- +void testApp::update(){ + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + if (isLive) { + openNIRecorders[deviceID].update(); + if (isRecording){ + recorded++; + } + } + else { + openNIPlayers[deviceID].update(); + } + } +} + +//-------------------------------------------------------------- +void testApp::draw(){ + ofBackground(0, 0, 0); + ofSetColor(255, 255, 255); + + ofPushMatrix(); + + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + ofTranslate(0, deviceID * 450); + if (isLive) { + //openNIRecorders[deviceID].drawDebug(); // draws all generators + openNIRecorders[deviceID].drawDepth(200, 0,600,450); + openNIRecorders[deviceID].drawImage(800, 0,600,450); + } + else { + //openNIPlayers[deviceID].drawDebug(); + openNIPlayers[deviceID].drawDepth(200, 0,600,450); + openNIPlayers[deviceID].drawImage(800, 0,600,450); + } + } + + ofPopMatrix(); + + ofSetColor(255, 255, 255); + string msg = "MILLIS: " + ofToString(ofGetElapsedTimeMillis()) + "\nFPS: " + ofToString(ofGetFrameRate()); + if (isRecording) { + msg +="\nrecorded "+ofToString(recorded); + } + if (!isLive) { + msg +="\n"+filenames[0]; + } + verdana.drawString(msg, 10, 10); +} + +//-------------------------------------------------------------- +void testApp::exit(){ + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIRecorders[deviceID].stop(); + openNIPlayers[deviceID].stop(); + } +} + +//-------------------------------------------------------------- +void testApp::keyPressed(int key){ + switch (key) { + case 's': + case 'S': + if (isRecording) { + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIRecorders[deviceID].stopRecording(); + stopSound.play(); + } + isRecording = false; + break; + } else { + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + filenames[deviceID]=generateFileName(deviceID); + openNIRecorders[deviceID].startRecording(generateFileName(deviceID)); + startSound.play(); + } + isRecording = true; + recorded=0; + break; + } + break; + case 'p': + case 'P': + if (filenames[0] != "" && !isRecording && isLive) { + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIRecorders[deviceID].stopRecording(); + } + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIPlayers[deviceID].startPlayer(filenames[deviceID]); + } + isLive = false; + //whichUser=&playUser; + //whichImage=&playImage; + } else { + isLive = true; + //whichUser=&recordUser; + //whichImage=&recordImage; + } + break; + } + + /* why do this? + switch (key) { + case 't': + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIRecorders[deviceID].toggleRegister(); + } + break; + case 'x': + for (int deviceID = 0; deviceID < numDevices; deviceID++){ + openNIRecorders[deviceID].stop(); + } + break; + default: + break; + } + */ +} + +//-------------------------------------------------------------- +void testApp::keyReleased(int key){ + +} + +//-------------------------------------------------------------- +void testApp::mouseMoved(int x, int y ){ + +} + +//-------------------------------------------------------------- +void testApp::mouseDragged(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::mousePressed(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::mouseReleased(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::windowResized(int w, int h){ + +} + diff --git a/02_rec/src/testApp.h b/02_rec/src/testApp.h new file mode 100644 index 0000000..ffb92e9 --- /dev/null +++ b/02_rec/src/testApp.h @@ -0,0 +1,42 @@ +#ifndef _TEST_APP +#define _TEST_APP + +#include "ofxOpenNI.h" +#include "ofMain.h" + +#define MAX_DEVICES 2 + +class testApp : public ofBaseApp{ + +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); + string generateFileName(int cam); + + int numDevices; + ofxOpenNI openNIRecorders[MAX_DEVICES]; + ofxOpenNI openNIPlayers[MAX_DEVICES]; + string filenames[MAX_DEVICES]; + + bool isLive, isRecording; + + ofTrueTypeFont verdana; + + ofSoundPlayer startSound; + ofSoundPlayer stopSound; + + int recorded; + +}; + +#endif |
