summaryrefslogtreecommitdiff
path: root/offsetProject/src/ofApp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'offsetProject/src/ofApp.cpp')
-rw-r--r--offsetProject/src/ofApp.cpp154
1 files changed, 152 insertions, 2 deletions
diff --git a/offsetProject/src/ofApp.cpp b/offsetProject/src/ofApp.cpp
index f65746e..7c5428c 100644
--- a/offsetProject/src/ofApp.cpp
+++ b/offsetProject/src/ofApp.cpp
@@ -60,6 +60,17 @@ void ofApp::setup() {
ofSetFrameRate(60);
+ kinect.setRegistration(true);
+ kinect.init();
+ kinect.open();
+ colourImage.allocate(kinect.width, kinect.height);
+ depthImage.allocate(kinect.width, kinect.height);
+ farThreshold = 70;
+ angle = 0;
+ kinect.setCameraTiltAngle(angle);
+ kinect.enableDepthNearValueWhite(true);
+ kinect.setDepthClipping(0,4000);
+
store.start();
mode=MODE_COLOURTILES;
@@ -72,6 +83,51 @@ void ofApp::update() {
ofSetWindowTitle(ofToString(ofGetFrameRate()));
+ kinect.update();
+
+ // there is a new frame and we are connected
+ if(kinect.isFrameNew()) {
+
+ depthImage.setFromPixels(kinect.getDepthPixels(), kinect.width, kinect.height);
+ colourImage.setFromPixels(kinect.getPixels(), kinect.width, kinect.height);
+
+ depthImage.threshold(farThreshold);
+
+ //threshold needs to be multiplied by the original
+ depthImage2.setFromPixels(kinect.getDepthPixels(), kinect.width, kinect.height);
+ depthImage*=depthImage2;
+
+ //depthImage.extend(extend_w,extend_h);
+ //colourImage.extend(extend_w,extend_h);
+
+ int h=ceil(ofGetHeight()/MAX_TILE_SIZE);
+ int w=(h*4)/3;
+ depthImage.resize(w,h);
+ colourImage.resize(w,h);
+
+ // mark pixels and texture dirty
+ depthImage.flagImageChanged();
+ colourImage.flagImageChanged();
+
+ /*
+ ofxCvColorImage *prevCol=&colourImage;
+ ofxCvGrayscaleImage *prevDepth=&depthImage;
+
+
+ for (int i=0;i<colourTiles.size();i++){
+ colourTiles[i].scaleIntoMe(*prevCol);
+ depthTiles[i].scaleIntoMe(*prevDepth);
+ prevCol=&colourTiles[i];
+ prevDepth=&depthTiles[i];
+
+ colourTiles[i].flagImageChanged();
+ depthTiles[i].flagImageChanged();
+ }
+ */
+ }
+
+ store.update();
+
}
@@ -84,7 +140,39 @@ void ofApp::draw() {
ofSetColor(255, 255, 255);
- store.draw();
+ int w,xstart,ystart,kinexstart;
+
+ switch(mode){
+ case MODE_COLOURTILES:
+ //store.draw();
+ xstart=(ofGetWidth()/2)-((colourImage.getHeight()/2)*MAX_TILE_SIZE);
+ ystart=(ofGetHeight()/2)-((colourImage.getHeight()/2)*MAX_TILE_SIZE);
+ kinexstart=(colourImage.getWidth()/2)-(colourImage.getHeight()/2);
+ ofPushMatrix();
+ ofTranslate(xstart,ystart);
+ w=colourImage.getWidth();
+ for (int i=0;i<depthImage.getHeight();i++){
+ for (int j=0;j<depthImage.getHeight();j++){
+ uint8_t* ppt=&colourImage.getPixels()[(j*w+(w-(i+kinexstart)))*3];
+ store.get_image(ofColor(ppt[0],ppt[1],ppt[2])).draw(i*MAX_TILE_SIZE,j*MAX_TILE_SIZE);
+ //ofSetColor(ppt[0],ppt[1],ppt[2]);
+ //ofRect(i*MAX_TILE_SIZE,j*MAX_TILE_SIZE,MAX_TILE_SIZE,MAX_TILE_SIZE);
+ }
+ }
+ ofPopMatrix();
+ break;
+
+ case MODE_DEPTH:
+
+ depthImage.draw(0,0,ofGetWidth(),ofGetHeight());
+ break;
+
+ case MODE_COMPONENTS:
+
+ depthImage.draw(0,0, 640,480);
+ colourImage.draw(640,0, 640,480);
+ break;
+ }
}
@@ -100,10 +188,72 @@ void ofApp::exit() {
void ofApp::keyPressed (int key) {
switch (key) {
+ case '>':
+ case '.':
+ farThreshold ++;
+ if (farThreshold > 255) farThreshold = 255;
+ break;
+
+ case '<':
+ case ',':
+ farThreshold --;
+ if (farThreshold < 0) farThreshold = 0;
+ break;
+
+
+ case 'w':
+ kinect.enableDepthNearValueWhite(!kinect.isDepthNearValueWhite());
+ break;
+
+ case 'o':
+ kinect.setCameraTiltAngle(angle); // go back to prev tilt
+ kinect.open();
+ break;
+
+ case 'c':
+ kinect.setCameraTiltAngle(0); // zero the tilt
+ kinect.close();
+ break;
+
+ case '1':
+ kinect.setLed(ofxKinect::LED_GREEN);
+ break;
+
+ case '2':
+ kinect.setLed(ofxKinect::LED_YELLOW);
+ break;
+
+ case '3':
+ kinect.setLed(ofxKinect::LED_RED);
+ break;
+
+ case '4':
+ kinect.setLed(ofxKinect::LED_BLINK_GREEN);
+ break;
+
+ case '5':
+ kinect.setLed(ofxKinect::LED_BLINK_YELLOW_RED);
+ break;
+
+ case '0':
+ kinect.setLed(ofxKinect::LED_OFF);
+ break;
+
+ case OF_KEY_UP:
+ angle++;
+ if(angle>30) angle=30;
+ kinect.setCameraTiltAngle(angle);
+ break;
+
+ case OF_KEY_DOWN:
+ angle--;
+ if(angle<-30) angle=-30;
+ kinect.setCameraTiltAngle(angle);
+ break;
case OF_KEY_LEFT:
mode--;
- if (mode<0) mode==NUM_MODES-1;
+ if (mode<0) mode=NUM_MODES-1;
break;
case OF_KEY_RIGHT: