diff options
Diffstat (limited to 'offsetProject/src/ofApp.cpp')
| -rw-r--r-- | offsetProject/src/ofApp.cpp | 168 |
1 files changed, 105 insertions, 63 deletions
diff --git a/offsetProject/src/ofApp.cpp b/offsetProject/src/ofApp.cpp index c5163f9..694c592 100644 --- a/offsetProject/src/ofApp.cpp +++ b/offsetProject/src/ofApp.cpp @@ -19,6 +19,11 @@ performance? use opencv to convert to floats? its a quick one.. +1. reinstate instagram adding +2. the button - saving images +3. tile scaling +4. performance - look + */ //-------------------------------------------------------------- void ofApp::setup() { @@ -52,6 +57,9 @@ void ofApp::setup() { tiledata=new float[FLANN_MATRIX_SIZE*FLANN_MATRIX_SIZE*3]; frametiledata=new float[FLANN_MATRIX_SIZE*FLANN_MATRIX_SIZE*3*h*h]; + + screenleft.loadImage("screenleft.png"); + screenright.loadImage("screenright.png"); } //-------------------------------------------------------------- @@ -59,88 +67,108 @@ void ofApp::update() { ofSetWindowTitle(ofToString(ofGetFrameRate())); - kinect.update(); + //prepare buffers etc + //decide whether to use kinect, to keep kinect photo frozen, or to display from instagram - // 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); + if (store.new_instagram()){ + mode=MODE_DRAWINSTAGRAM; + } - //threshold needs to be multiplied by the original - depthImage2.setFromPixels(kinect.getDepthPixels(), kinect.width, kinect.height); - depthImage*=depthImage2; + store.update(); - //depthImage.extend(extend_w,extend_h); - //colourImage.extend(extend_w,extend_h); + switch(mode){ + case MODE_DRAWINSTAGRAM: + case MODE_FROZEN: + break; + default: + kinect.update(); - int h=ceil(ofGetHeight()/MAX_TILE_SIZE); - int w=(h*4)/3; - depthImage.resize(w,h); - + // there is a new frame and we are connected + if(kinect.isFrameNew()) { - int fh=h*FLANN_MATRIX_SIZE; - int fw=w*FLANN_MATRIX_SIZE; - colourImage.resize(fw,fh); + depthImage.setFromPixels(kinect.getDepthPixels(), kinect.width, kinect.height); + colourImage.setFromPixels(kinect.getPixels(), kinect.width, kinect.height); - //cerr<<"needed: "<<h<<"*"<<FLANN_MATRIX_SIZE<<"*"<<h<<"*"<<FLANN_MATRIX_SIZE<<"*3"<<endl; + depthImage.threshold(farThreshold); + //threshold needs to be multiplied by the original + depthImage2.setFromPixels(kinect.getDepthPixels(), kinect.width, kinect.height); + depthImage*=depthImage2; - int kinexstart=(colourImage.getWidth()/2)+(colourImage.getHeight()/2); - uint8_t* cptr=colourImage.getPixels(); - for (int i=0;i<fh;i++){ - for (int j=0;j<fh;j++){ - floatImage[(i*fh+j)*3]=cptr[(((i*fw)+kinexstart)-j)*3]; - floatImage[(i*fh+j)*3+1]=cptr[(((i*fw)+kinexstart)-j)*3+1]; - floatImage[(i*fh+j)*3+2]=cptr[(((i*fw)+kinexstart)-j)*3+2]; - } - } -/* - store.flann(cptr,w,h); - - int tilestep=(FLANN_MATRIX_SIZE*FLANN_MATRIX_SIZE*3); - for (int i=0;i<h;i++){ - for (int j=0;j<w;j++){ - for (int k=0;k<FLANN_MATRIX_SIZE;k++){ - for (int l=0;l<FLANN_MATRIX_SIZE;l++){ - frametiledata[((k*FLANN_MATRIX_SIZE+l)*3)+(tilestep*(j*w+i))]=cptr[((i*FLANN_MATRIX_SIZE+k)*fw+kinexstart)-(j*FLANN_MATRIX_SIZE+l))*3]; - frametiledata[((k*FLANN_MATRIX_SIZE+l)*3)+(tilestep*(j*w+i))]=cptr[((i*FLANN_MATRIX_SIZE+k)*fw+kinexstart)-(j*FLANN_MATRIX_SIZE+l))*3]; - frametiledata[((k*FLANN_MATRIX_SIZE+l)*3)+(tilestep*(j*w+i))]=cptr[((i*FLANN_MATRIX_SIZE+k)*fw+kinexstart)-(j*FLANN_MATRIX_SIZE+l))*3]; + //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); + + + int fh=h*FLANN_MATRIX_SIZE; + int fw=w*FLANN_MATRIX_SIZE; + colourImage.resize(fw,fh); + + //cerr<<"needed: "<<h<<"*"<<FLANN_MATRIX_SIZE<<"*"<<h<<"*"<<FLANN_MATRIX_SIZE<<"*3"<<endl; + + + int kinexstart=(colourImage.getWidth()/2)+(colourImage.getHeight()/2); + uint8_t* cptr=colourImage.getPixels(); + for (int i=0;i<fh;i++){ + for (int j=0;j<fh;j++){ + floatImage[(i*fh+j)*3]=cptr[(((i*fw)+kinexstart)-j)*3]; + floatImage[(i*fh+j)*3+1]=cptr[(((i*fw)+kinexstart)-j)*3+1]; + floatImage[(i*fh+j)*3+2]=cptr[(((i*fw)+kinexstart)-j)*3+2]; } } - } - } -*/ + /* + store.flann(cptr,w,h); + + int tilestep=(FLANN_MATRIX_SIZE*FLANN_MATRIX_SIZE*3); + for (int i=0;i<h;i++){ + for (int j=0;j<w;j++){ + for (int k=0;k<FLANN_MATRIX_SIZE;k++){ + for (int l=0;l<FLANN_MATRIX_SIZE;l++){ + frametiledata[((k*FLANN_MATRIX_SIZE+l)*3)+(tilestep*(j*w+i))]=cptr[((i*FLANN_MATRIX_SIZE+k)*fw+kinexstart)-(j*FLANN_MATRIX_SIZE+l))*3]; + frametiledata[((k*FLANN_MATRIX_SIZE+l)*3)+(tilestep*(j*w+i))]=cptr[((i*FLANN_MATRIX_SIZE+k)*fw+kinexstart)-(j*FLANN_MATRIX_SIZE+l))*3]; + frametiledata[((k*FLANN_MATRIX_SIZE+l)*3)+(tilestep*(j*w+i))]=cptr[((i*FLANN_MATRIX_SIZE+k)*fw+kinexstart)-(j*FLANN_MATRIX_SIZE+l))*3]; + } + } + } + } + */ - //floatImage.allocate(w*FLANN_MATRIX_SIZE,h*FLANN_MATRIX_SIZE); - //floatImage=colourImage; - //floatImage.scaleIntoMe(colourImage); + //floatImage.allocate(w*FLANN_MATRIX_SIZE,h*FLANN_MATRIX_SIZE); + //floatImage=colourImage; + //floatImage.scaleIntoMe(colourImage); - // mark pixels and texture dirty - depthImage.flagImageChanged(); - //colourImage.flagImageChanged(); - //floatImage.flagImageChanged(); + // mark pixels and texture dirty + depthImage.flagImageChanged(); + //colourImage.flagImageChanged(); + //floatImage.flagImageChanged(); - /* - ofxCvColorImage *prevCol=&colourImage; - ofxCvGrayscaleImage *prevDepth=&depthImage; + /* + 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]; + 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(); + } + */ + } + break; + } - colourTiles[i].flagImageChanged(); - depthTiles[i].flagImageChanged(); - } - */ - } - store.update(); + + } @@ -154,9 +182,23 @@ void ofApp::draw() { ofSetColor(255, 255, 255); + screenleft.draw(0,0,(ofGetWidth()-ofGetHeight())/2,ofGetHeight()); + screenright.draw(ofGetWidth()-((ofGetWidth()-ofGetHeight())/2),0,(ofGetWidth()-ofGetHeight())/2,ofGetHeight()); + store.drawinstagram(ofGetWidth()-(((ofGetWidth()-ofGetHeight())/2)*0.8f),ofGetHeight()*0.44f,ofGetHeight()*0.24f,ofGetHeight()*0.24f); + + int fw,w,xstart,ystart,kinexstart; switch(mode){ + case MODE_DRAWINSTAGRAM: + if (!store.drawinstagram((ofGetWidth()/2)-(ofGetHeight()/2),0,ofGetHeight(),ofGetHeight())) { + mode=MODE_FROZEN; + store.instagram_floats(floatImage); + frozentime=ofGetElapsedTimef(); + } + break; + case MODE_FROZEN: + if (ofGetElapsedTimef()-frozentime>IMAGE_FREEZE_TIME) mode=MODE_COLOURTILES; case MODE_COLOURTILES: //store.draw(); xstart=(ofGetWidth()/2)-((depthImage.getHeight()/2)*MAX_TILE_SIZE); |
