From 63a6970325463b3533edbf910f88750cb2d096f1 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Tue, 11 Mar 2014 14:58:03 +0000 Subject: folder scanning and saving images --- offsetProject/src/ofApp.cpp | 298 ++++++++------------------------------------ 1 file changed, 55 insertions(+), 243 deletions(-) (limited to 'offsetProject/src/ofApp.cpp') diff --git a/offsetProject/src/ofApp.cpp b/offsetProject/src/ofApp.cpp index 02875f2..00c7f57 100644 --- a/offsetProject/src/ofApp.cpp +++ b/offsetProject/src/ofApp.cpp @@ -1,71 +1,66 @@ #include "ofApp.h" +/* +so far so good, NOW -//-------------------------------------------------------------- -void ofApp::setup() { - ofSetLogLevel(OF_LOG_WARNING); - - // enable depth->video image calibration - kinect.setRegistration(true); - - kinect.init(); - //kinect.init(true); // shows infrared instead of RGB video image - //kinect.init(false, false); // disable video image (faster fps) - - kinect.open(); // opens first available kinect - //kinect.open(1); // open a kinect by id, starting with 0 (sorted by serial # lexicographically)) - //kinect.open("A00362A08602047A"); // open a kinect using it's unique serial # - - // print the intrinsic IR sensor values - if(kinect.isConnected()) { - ofLogNotice() << "sensor-emitter dist: " << kinect.getSensorEmitterDistance() << "cm"; - ofLogNotice() << "sensor-camera dist: " << kinect.getSensorCameraDistance() << "cm"; - ofLogNotice() << "zero plane pixel size: " << kinect.getZeroPlanePixelSize() << "mm"; - ofLogNotice() << "zero plane dist: " << kinect.getZeroPlaneDistance() << "mm"; - } - - - colourImage.allocate(kinect.width, kinect.height); - depthImage.allocate(kinect.width, kinect.height); - - farThreshold = 70; - - ofSetFrameRate(60); - - // zero the tilt on startup - angle = 0; - kinect.setCameraTiltAngle(angle); +threading - //start with the largest size square - //get the depth, if below a certain size, subdivide and repeat +parse response and identify new pictures +save pictures & metadata - rather than reloading each time? +local images format +do we need any metadata? I guess not other than to know the tag id +could save with the tag id as the name of file, simpler - //OR start at the smallest size, if adjacent squares are the same, work up +how exactly do we parse or mipmap the images +do we worry about memory - I guess not - //1 - create a pyramid of mip maps of depth - //2 - work upwards +identify the images - //a find layout of largest tiles - //b extend captured frame to this ratio - //c mip map this down into prepared containers +image save- reload system (? even necessary ?) +camera + button +transitions - int tiles_w=ceil((float)kinect.width/(MAX_TILE_SIZE*2))*2; - int tiles_h=ceil((float)kinect.height/(MAX_TILE_SIZE*2))*2; - extend_w=(tiles_w)*MAX_TILE_SIZE; - extend_h=(tiles_h)*MAX_TILE_SIZE; +should the loader own the images? +should the whole image bank be locked while loading? +alternatively each image could have a lock? - threadedImage - //get number of levels - levels=0; - for (int i=MIN_TILE_SIZE;i<=MAX_TILE_SIZE;i*=2) { - levels++; - } +or true mip map via drawsubsection? + +start with a max size say 64 - should be 16k inc mip maps + +graphics card has 2048MB +9% in use by ubuntu +117964 textures +I wonder is this faster with shared memory.. - colourTiles.resize(levels); - depthTiles.resize(levels); +load app +get list of images in defined folder +load them and create mip maps +store indexed by file stub - for (int i=MIN_TILE_SIZE,l=0;i<=MAX_TILE_SIZE;i*=2,l++) { - colourTiles[l].allocate(extend_w/i,extend_h/i); - depthTiles[l].allocate(extend_w/i,extend_h/i); - cerr<<"level "<0&&max(0,depthTiles[level].getPixels()[y*((int)depthTiles[level].getWidth())+x]-128)>level*levels_factor){ - for (int i=0;i<2;i++){ - for (int j=0;j<2;j++){ - checktile(level-1,x*2+i,y*2+j,size/2); - } - } - } - else { - ofSetColor(colourTiles[level].getPixels()[(y*((int)colourTiles[level].getWidth())+x)*3], - colourTiles[level].getPixels()[(y*((int)colourTiles[level].getWidth())+x)*3+1], - colourTiles[level].getPixels()[(y*((int)colourTiles[level].getWidth())+x)*3+2]); - ofRect(x*size,y*size,size,size); - } -} + //-------------------------------------------------------------- void ofApp::draw() { @@ -138,79 +85,7 @@ void ofApp::draw() { ofSetColor(255, 255, 255); - int pixelsize=ofGetWidth()/colourTiles[levels-1].getWidth(); - - - switch(mode){ - case MODE_COLOURTILES: - - //recursively draw pixels - - //int yoffset= - - for (int i=0;i': - 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; -- cgit v1.2.3