summaryrefslogtreecommitdiff
path: root/offsetProject
diff options
context:
space:
mode:
Diffstat (limited to 'offsetProject')
-rw-r--r--offsetProject/Makefile2
-rw-r--r--offsetProject/config.make145
-rw-r--r--offsetProject/src/ofApp.cpp298
-rw-r--r--offsetProject/src/ofApp.h2
4 files changed, 201 insertions, 246 deletions
diff --git a/offsetProject/Makefile b/offsetProject/Makefile
index 7a7fe8b..cda22b7 100644
--- a/offsetProject/Makefile
+++ b/offsetProject/Makefile
@@ -6,7 +6,7 @@ endif
# make sure the the OF_ROOT location is defined
ifndef OF_ROOT
- OF_ROOT=../../..
+ OF_ROOT=../../openFrameworks
endif
# call the project makefile!
diff --git a/offsetProject/config.make b/offsetProject/config.make
index 98bb09c..c9fd9dc 100644
--- a/offsetProject/config.make
+++ b/offsetProject/config.make
@@ -1 +1,144 @@
-OF_ROOT=../../openFrameworks
+################################################################################
+# CONFIGURE PROJECT MAKEFILE (optional)
+# This file is where we make project specific configurations.
+################################################################################
+
+################################################################################
+# OF ROOT
+# The location of your root openFrameworks installation
+# (default) PATH_OF_ROOT = ../../..
+################################################################################
+# PATH_OF_ROOT = ../../..
+
+################################################################################
+# PROJECT ROOT
+# The location of the project - a starting place for searching for files
+# (default) PROJECT_ROOT = . (this directory)
+#
+################################################################################
+# PROJECT_ROOT = .
+
+################################################################################
+# PROJECT SPECIFIC CHECKS
+# This is a project defined section to create internal makefile flags to
+# conditionally enable or disable the addition of various features within
+# this makefile. For instance, if you want to make changes based on whether
+# GTK is installed, one might test that here and create a variable to check.
+################################################################################
+# None
+
+################################################################################
+# PROJECT EXTERNAL SOURCE PATHS
+# These are fully qualified paths that are not within the PROJECT_ROOT folder.
+# Like source folders in the PROJECT_ROOT, these paths are subject to
+# exlclusion via the PROJECT_EXLCUSIONS list.
+#
+# (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank)
+#
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+# PROJECT_EXTERNAL_SOURCE_PATHS =
+
+################################################################################
+# PROJECT EXCLUSIONS
+# These makefiles assume that all folders in your current project directory
+# and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations
+# to look for source code. The any folders or files that match any of the
+# items in the PROJECT_EXCLUSIONS list below will be ignored.
+#
+# Each item in the PROJECT_EXCLUSIONS list will be treated as a complete
+# string unless teh user adds a wildcard (%) operator to match subdirectories.
+# GNU make only allows one wildcard for matching. The second wildcard (%) is
+# treated literally.
+#
+# (default) PROJECT_EXCLUSIONS = (blank)
+#
+# Will automatically exclude the following:
+#
+# $(PROJECT_ROOT)/bin%
+# $(PROJECT_ROOT)/obj%
+# $(PROJECT_ROOT)/%.xcodeproj
+#
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+# PROJECT_EXCLUSIONS =
+
+################################################################################
+# PROJECT LINKER FLAGS
+# These flags will be sent to the linker when compiling the executable.
+#
+# (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs
+#
+# Note: Leave a leading space when adding list items with the += operator
+#
+# Currently, shared libraries that are needed are copied to the
+# $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to
+# add a runtime path to search for those shared libraries, since they aren't
+# incorporated directly into the final executable application binary.
+################################################################################
+# PROJECT_LDFLAGS=-Wl,-rpath=./libs
+
+PROJECT_LDFLAGS= -ljsoncpp
+
+################################################################################
+# PROJECT DEFINES
+# Create a space-delimited list of DEFINES. The list will be converted into
+# CFLAGS with the "-D" flag later in the makefile.
+#
+# (default) PROJECT_DEFINES = (blank)
+#
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+# PROJECT_DEFINES =
+
+################################################################################
+# PROJECT CFLAGS
+# This is a list of fully qualified CFLAGS required when compiling for this
+# project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS
+# defined in your platform specific core configuration files. These flags are
+# presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below.
+#
+# (default) PROJECT_CFLAGS = (blank)
+#
+# Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in
+# your platform specific configuration file will be applied by default and
+# further flags here may not be needed.
+#
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+ PROJECT_CFLAGS = `pkg-config --cflags jsoncpp`
+
+
+################################################################################
+# PROJECT OPTIMIZATION CFLAGS
+# These are lists of CFLAGS that are target-specific. While any flags could
+# be conditionally added, they are usually limited to optimization flags.
+# These flags are added BEFORE the PROJECT_CFLAGS.
+#
+# PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets.
+#
+# (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank)
+#
+# PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets.
+#
+# (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank)
+#
+# Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the
+# PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration
+# file will be applied by default and further optimization flags here may not
+# be needed.
+#
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+# PROJECT_OPTIMIZATION_CFLAGS_RELEASE =
+# PROJECT_OPTIMIZATION_CFLAGS_DEBUG =
+
+################################################################################
+# PROJECT COMPILERS
+# Custom compilers can be set for CC and CXX
+# (default) PROJECT_CXX = (blank)
+# (default) PROJECT_CC = (blank)
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+# PROJECT_CXX =
+# PROJECT_CC =
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 "<<l<<" mipmap: "<<colourTiles[l].getWidth()<<"x"<<colourTiles[l].getHeight()<<endl;
+when a new image comes in
+load and create mip maps
+save to
+
+*/
+//--------------------------------------------------------------
+void ofApp::setup() {
+ ofSetLogLevel(OF_LOG_WARNING);
+
+ ofSetFrameRate(60);
+
+ ofDirectory image_path(ofToString(IMAGE_STORE_SIZE)+"/");
+ cerr<<"image path: "<<image_path.getAbsolutePath()<<endl;
+ if (image_path.exists()){
+ image_path.listDir();
+ cerr<<"image path found, "<<image_path.size()<<" images"<<endl;
+ for (int i=0;i<image_path.size();i++){
+ cerr<<image_path.getFiles()[i].getFileName()<<endl;
+ }
+ }
+ else {
+ cerr<<"creating image path"<<endl;
+ image_path.create();
}
mode=MODE_COLOURTILES;
@@ -78,58 +73,10 @@ 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);
-
- // 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();
- }
- }
}
-void ofApp::checktile(int level,int x,int y,int size){
- int levels_factor=128/levels;
- if (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<colourTiles[levels-1].getWidth();i++){
- for (int j=0;j<colourTiles[levels-1].getHeight();j++){
- checktile(levels-1,i,j,pixelsize);
- }
- }
- 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);
-
- int xoffs=10;
- for (int i=0;i<depthTiles.size();i++){
- depthTiles[i].draw(xoffs,500,depthTiles[i].getWidth(),depthTiles[i].getHeight());
- colourTiles[i].draw(xoffs+640,500,colourTiles[i].getWidth(),colourTiles[i].getHeight());
- xoffs+=(colourTiles[i].getWidth()+10);
- }
- break;
-
- }
-
-
- /*
-
-
-
-
-
- */
-
-
- /*
- // draw from the live kinect
- kinect.drawDepth(10, 10, 400, 300);
- kinect.draw(420, 10, 400, 300);
-
- depthImage.draw(10, 320, 400, 300);
-
-
- // draw instructions
- ofSetColor(255, 255, 255);
- stringstream reportStream;
-
- reportStream << "press p to switch between images and point cloud, rotate the point cloud with the mouse" << endl
- << "set far threshold " << farThreshold
- << ", fps: " << ofGetFrameRate() << endl
- << "press c to close the connection and o to open it again, connection is: " << kinect.isConnected() << endl;
-
- if(kinect.hasCamTiltControl()) {
- reportStream << "press UP and DOWN to change the tilt angle: " << angle << " degrees" << endl
- << "press 1-5 & 0 to change the led mode" << endl;
- }
-
- ofDrawBitmapString(reportStream.str(), 20, 652);
-
- */
}
@@ -218,8 +93,7 @@ void ofApp::draw() {
//--------------------------------------------------------------
void ofApp::exit() {
- kinect.setCameraTiltAngle(0); // zero the tilt on exit
- kinect.close();
+
}
@@ -227,69 +101,7 @@ 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;
diff --git a/offsetProject/src/ofApp.h b/offsetProject/src/ofApp.h
index 711dc0d..67e1b71 100644
--- a/offsetProject/src/ofApp.h
+++ b/offsetProject/src/ofApp.h
@@ -13,7 +13,7 @@
#define NUM_MODES 3
-#define STORE_SIZE 256
+#define IMAGE_STORE_SIZE 256
class ofApp : public ofBaseApp {