summaryrefslogtreecommitdiff
path: root/offsetProject/src/ofApp.cpp
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2014-03-14 14:07:28 +0000
committerTim Redfern <tim@eclectronics.org>2014-03-14 14:07:28 +0000
commitbcf4c0ac5428a1c3f331d66cf0c4a301d1f7a45f (patch)
treeef4011c68ae756815aa47da218029801e9c56ec6 /offsetProject/src/ofApp.cpp
parentbb852cee91b52b71fccade7d4a1ef065eb0de2f0 (diff)
nearly ready
Diffstat (limited to 'offsetProject/src/ofApp.cpp')
-rw-r--r--offsetProject/src/ofApp.cpp168
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);