From b3e8415fcdd7d936135791a300057b21d39f8f0a Mon Sep 17 00:00:00 2001 From: dviid Date: Tue, 24 Jan 2012 16:52:22 +0100 Subject: [PATCH] merge Tom files --- .gitignore | 2 + example/RefractiveIndex.cpp | 155 +++++++++++++++++++++++------------ example/RefractiveIndex.h | 44 +++------- example/main.cpp | 2 - src/CamFrameRateAnalysis.cpp | 112 +++++++++++++------------ src/CamNoiseAnalysis.cpp | 113 +++++++++++++------------ src/ColorMultiAnalysis.cpp | 99 ++++++++++++---------- src/ColorSingleAnalysis.cpp | 98 ++++++++++++---------- src/DiffNoiseAnalysis.cpp | 115 ++++++++++++++------------ src/IResponseAnalysis.cpp | 108 +++++++++++++----------- src/LatencyTestAnalysis.cpp | 112 +++++++++++++------------ src/ShadowScapesAnalysis.cpp | 105 +++++++++++++----------- src/StrobeAnalysis.cpp | 94 +++++++++++---------- 13 files changed, 631 insertions(+), 528 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ac015e1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +src/.DS_Store diff --git a/example/RefractiveIndex.cpp b/example/RefractiveIndex.cpp index 28390f0..6fdb7be 100644 --- a/example/RefractiveIndex.cpp +++ b/example/RefractiveIndex.cpp @@ -1,33 +1,7 @@ /* - - copyright (c) 2011 Copenhagen Institute of Interaction Design (CIID) - - all rights reserved. - - + redistribution and use in source and binary forms, with or without - + modification, are permitted provided that the following conditions - + are met: - + > redistributions of source code must retain the above copyright - + notice, this list of conditions and the following disclaimer. - + > redistributions in binary form must reproduce the above copyright - + notice, this list of conditions and the following disclaimer in - + the documentation and/or other materials provided with the - + distribution. - - + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - + AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - + SUCH DAMAGE. - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ author: dviid - ~ contact: dviid@labs.ciid.dk + ~ contact: dviid@labs.ciid.dk */ #include "RefractiveIndex.h" @@ -35,11 +9,24 @@ #include "IResponseAnalysis.h" #include "StrobeAnalysis.h" #include "ShadowScapesAnalysis.h" +#include "ColorMultiAnalysis.h" +#include "ColorSingleAnalysis.h" +#include "CamFrameRateAnalysis.h" +#include "CamNoiseAnalysis.h" +#include "LatencyTestAnalysis.h" +#include "DiffNoiseAnalysis.h" #define CAMERA_ID 1 #define CAMERA_ACQU_WIDTH 640 #define CAMERA_ACQU_HEIGHT 480 +ofPixels RefractiveIndex::_pixels; +ofVideoGrabber RefractiveIndex::_vidGrabber; +int RefractiveIndex::_vid_w, RefractiveIndex::_vid_h, RefractiveIndex::_vid_id; +bool RefractiveIndex::_vid_stream_open; +bool RefractiveIndex::_vid_toggle_on; +string RefractiveIndex::_location; + void RefractiveIndex::setup() { // rate @@ -51,10 +38,10 @@ void RefractiveIndex::setup() _vid_h = CAMERA_ACQU_HEIGHT; _vid_id = CAMERA_ID; _vid_stream_open = false; - //setup_camera(); - + _vid_toggle_on = false; + // gui - _gui.loadFont("MONACO.TTF", 8); + _gui.loadFont("MONACO.TTF", 8); _gui.setup("REFRACTIVE INDEX", 0, 0, ofGetWidth(), ofGetHeight()); // -> PANEL #0 @@ -62,38 +49,69 @@ void RefractiveIndex::setup() _gui.setWhichPanel(0); // --> COLUMN #0 _gui.setWhichColumn(0); - _gui.addToggle("open camera", "CAM_IS_GO", 0); + + //GET THE INPUT NAMES FROM THE QT VIDEO GRABBER + + _gui.addToggle("more cam settings", "SETTINGS", 0); + + _gui.addToggle("turn on camera", "CAM_IS_GO", 0); _gui.addButtonSlider("camera width", "CAM_WIDTH", _vid_w, CAMERA_ACQU_WIDTH, 1920, true); _gui.addButtonSlider("camera height", "CAM_HEIGHT", _vid_h, CAMERA_ACQU_HEIGHT, 1080, true); _gui.setWhichColumn(1); _gui.addToggle("run", "RUN", 0); - _gui.setupEvents(); _gui.enableEvents(); // -- this gives you back an ofEvent for all events in this control panel object ofAddListener(_gui.guiEvent, this, &RefractiveIndex::eventsIn); - + _currentAnalysis = NULL; _analysisAdapator = NULL; - - + + //getting a warning from the OFlog that the pixels aren't allocated + // void ofPixels::allocate(int w, int h, ofImageType type) + + //_pixels.allocate( + _location="MIDDLESBOROUGH"; + //setup_camera(); + } void RefractiveIndex::update() { _gui.update(); + RefractiveIndex::_vidGrabber.grabFrame(); // get a new frame from the camera + + if (_vidGrabber.isFrameNew()) + { + _pixels = _vidGrabber.getPixelsRef(); //get ofPixels from the camera + } } void RefractiveIndex::draw() { - ofBackground(0, 0, 0); - + ofBackground(0, 0, 0); + + if(_currentAnalysis) + _currentAnalysis->draw(); - else + + // i would like to pass the pixels we've just got from the camera into the draw function for the current analysis here + // but the way that 'draw' functino in _currentAnalysis, which is an AbstractAnalysis, is as a "Pure Virtual Function" + // which i think means it can't be passed any arguments or data??? + + //_currentAnalysis->draw(_pixels); + + else _gui.draw(); + + // if there is a new frame in the camera + /* if (_vidGrabber.isFrameNew()) + { + _vidGrabber.draw(0,0); //get ofPixels from the camera + }*/ } void RefractiveIndex::setup_camera() @@ -102,32 +120,33 @@ void RefractiveIndex::setup_camera() _vidGrabber.close(); _vid_stream_open = false; } - + if(!_vidGrabber.initGrabber(_vid_w, _vid_h)) { ofLog(OF_LOG_ERROR) << "RefractiveIndex::setup_camera - could not initialise grabber"; return; - } - _vidGrabber.setDeviceID(_vid_id); - _vidGrabber.setVerbose(true); + } + _vidGrabber.listDevices(); + _vidGrabber.setVerbose(true); _vid_stream_open = true; + _vidGrabber.setDeviceID(_vid_id); + } void RefractiveIndex::keyPressed (int key) { if( key =='f') - ofToggleFullscreen(); - + ofToggleFullscreen(); + else if( key =='s') { if(_currentAnalysis && _analysisAdapator) { - _analysisAdapator->stop(); + _analysisAdapator->stop(); delete _currentAnalysis; delete _analysisAdapator; _currentAnalysis = NULL; _analysisAdapator = NULL; - cout << "bingo!\n\n"; + cout << "bingo!\n\n"; //bingo means 'stop analysis'? } } - } void RefractiveIndex::mouseDragged(int x, int y, int button) @@ -135,30 +154,62 @@ void RefractiveIndex::mouseDragged(int x, int y, int button) _gui.mouseDragged(x, y, button); } + void RefractiveIndex::mousePressed(int x, int y, int button) { _gui.mousePressed(x, y, button); } + void RefractiveIndex::mouseReleased(int x, int y, int button) { - _gui.mouseReleased(); + _gui.mouseReleased(); } + void RefractiveIndex::eventsIn(guiCallbackData& data) { if(data.getDisplayName() == "run"){ - ofLog(OF_LOG_VERBOSE) << "run..."; - _currentAnalysis = new IResponseAnalysis(); - _analysisAdapator = new AnalysisAdaptor(_currentAnalysis); + + ofLog(OF_LOG_VERBOSE) << "run..."; + + //_currentAnalysis = new ShadowScapesAnalysis(); // create an analysis and give it an adaptor + //_currentAnalysis = new StrobeAnalysis(); // create an analysis and give it an adaptor + //_currentAnalysis = new IResponseAnalysis(); // create an analysis and give it an adaptor + //_currentAnalysis = new ColorMultiAnalysis(); + //_currentAnalysis = new CamFrameRateAnalysis(); + //_currentAnalysis = new CamNoiseAnalysis(); + _currentAnalysis = new ColorSingleAnalysis(); + //_currentAnalysis = new LatencyTestAnalysis(); + //_currentAnalysis = new DiffNoiseAnalysis(); + + _analysisAdapator = new AnalysisAdaptor(_currentAnalysis); //Adaptors start and stop _currentAnalysis->setup(_vid_w, _vid_h); _analysisAdapator->start(); } + + if(data.getDisplayName() == "turn on camera" ){ + + _vid_toggle_on=!_vid_toggle_on; + + if (_vid_toggle_on) + { + setup_camera(); + } else if (!_vid_toggle_on) { + _vidGrabber.close(); + } + } + + //more cam settings", "SETTINGS" + if( data.getDisplayName() == "more cam settings" ){ + _vidGrabber.videoSettings(); + } + } void RefractiveIndex::grabBackgroundEvent(guiCallbackData & data) { - + } diff --git a/example/RefractiveIndex.h b/example/RefractiveIndex.h index 884db29..8a6c06d 100644 --- a/example/RefractiveIndex.h +++ b/example/RefractiveIndex.h @@ -1,30 +1,4 @@ /* - - copyright (c) 2011 Copenhagen Institute of Interaction Design (CIID) - - all rights reserved. - - + redistribution and use in source and binary forms, with or without - + modification, are permitted provided that the following conditions - + are met: - + > redistributions of source code must retain the above copyright - + notice, this list of conditions and the following disclaimer. - + > redistributions in binary form must reproduce the above copyright - + notice, this list of conditions and the following disclaimer in - + the documentation and/or other materials provided with the - + distribution. - - + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - + AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - + SUCH DAMAGE. - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ author: dviid ~ contact: dviid@labs.ciid.dk @@ -68,12 +42,18 @@ protected: // gui ofxControlPanel _gui; - // acquisition - ofVideoGrabber _vidGrabber; - int _vid_w, _vid_h, _vid_id; - bool _vid_stream_open; - AbstractAnalysis* _currentAnalysis; AnalysisAdaptor* _analysisAdapator; - + +public: + // acquisition + static ofPixels _pixels; + static ofVideoGrabber _vidGrabber; + vector videoSourceList; + static int _vid_w, _vid_h, _vid_id; + static bool _vid_stream_open; + static bool _vid_toggle_on; + static string _location; + + }; \ No newline at end of file diff --git a/example/main.cpp b/example/main.cpp index efab296..fc36be1 100755 --- a/example/main.cpp +++ b/example/main.cpp @@ -1,5 +1,4 @@ #include "ofAppGlutWindow.h" -#include "testApp.h" #include "RefractiveIndex.h" int main() { @@ -7,6 +6,5 @@ int main() { //window.setGlutDisplayString("rgba double samples >= 8"); ofSetupOpenGL(&window, 1024, 768, OF_WINDOW); ofRunApp(new RefractiveIndex()); - //ofRunApp(new testApp()); } diff --git a/src/CamFrameRateAnalysis.cpp b/src/CamFrameRateAnalysis.cpp index 245ce4f..1d1a010 100755 --- a/src/CamFrameRateAnalysis.cpp +++ b/src/CamFrameRateAnalysis.cpp @@ -1,6 +1,6 @@ /* ~ author: dviid - ~ contact: dviid@labs.ciid.dk + ~ contact: dviid@labs.ciid.dk */ #include "CamFrameRateAnalysis.h" @@ -17,31 +17,39 @@ using Poco::Thread; void CamFrameRateAnalysis::setup(int camWidth, int camHeight) -{ - // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES +{ + // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES + + //FOR WINDOWS i HAVE HAD TO REPLACE SPACES WITH UNDERSCORES AND REDUCE THE LENGTH OF THE FOLDER NAME time_t rawtime; struct tm * timeinfo; - + time ( &rawtime ); timeinfo = localtime ( &rawtime ); - string time = asctime(timeinfo); - - cout<<"time"< save_callback(*this, &CamFrameRateAnalysis::save_cb); - - // RUN ROUTINE + + // RUN ROUTINE for(int i = 0; i < NUM_RUN; i++) { - + _run_cnt = i; - + cout << "RUN NUM = " << i; - + save_timer = new Timer(0, DELTA_T_SAVE); // timing interval for saving files - save_timer->start(save_callback); + save_timer->start(save_callback); _RUN_DONE = false; _frame_cnt = 0; _save_cnt = 0; - + while(!_RUN_DONE) Thread::sleep(3); - - save_timer->stop(); + + save_timer->stop(); } } void CamFrameRateAnalysis::gui_attach(ofxControlPanel* gui) { - + } void CamFrameRateAnalysis::gui_detach() { - + } -//void CamFrameRateAnalysis::draw(ofPixels _pixels) //trying to figure out how to get pixels from the RefractiveIndex.cpp +//void CamFrameRateAnalysis::draw(ofPixels _pixels) //trying to figure out how to get pixels from the RefractiveIndex.cpp // this runs at frame rate = 33 ms for 30 FPS void CamFrameRateAnalysis::draw() { /// *** TODO *** /// - // still need to deal with latency frames here - i.e.: there are frames + // still need to deal with latency frames here - i.e.: there are frames /// *** TODO *** /// float totalTime=_frame_cnt_max/2; - + float numSteps=10; - + vectorstepLengths; - - + + //c must increase until frame_cnt_max * 0.5 and then decrease afterwards - - + + if (_frame_cnt < _frame_cnt_max) { ofSetColor(c, c, c); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); + ofRect(0, 0, ofGetWidth(), ofGetHeight()); c = 255.0 * (_frame_cnt_max - _frame_cnt)/(_frame_cnt_max); cout<<_frame_cnt<= NUM_SAVE_PER_RUN) _RUN_DONE = true; - -} \ No newline at end of file + +} diff --git a/src/CamNoiseAnalysis.cpp b/src/CamNoiseAnalysis.cpp index 4fa0349..8b2b179 100755 --- a/src/CamNoiseAnalysis.cpp +++ b/src/CamNoiseAnalysis.cpp @@ -1,6 +1,6 @@ /* ~ author: dviid - ~ contact: dviid@labs.ciid.dk + ~ contact: dviid@labs.ciid.dk */ #include "CamNoiseAnalysis.h" @@ -17,35 +17,40 @@ using Poco::Thread; void CamNoiseAnalysis::setup(int camWidth, int camHeight) -{ - // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES +{ + // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES + + //FOR WINDOWS i HAVE HAD TO REPLACE SPACES WITH UNDERSCORES AND REDUCE THE LENGTH OF THE FOLDER NAME time_t rawtime; struct tm * timeinfo; - + time ( &rawtime ); timeinfo = localtime ( &rawtime ); - string time = asctime(timeinfo); - - cout<<"time"< save_callback(*this, &CamNoiseAnalysis::save_cb); - - // RUN ROUTINE + + // RUN ROUTINE for(int i = 0; i < NUM_RUN; i++) { - + _run_cnt = i; - + cout << "RUN NUM = " << i; - + save_timer = new Timer(0, DELTA_T_SAVE); // timing interval for saving files - save_timer->start(save_callback); + save_timer->start(save_callback); _RUN_DONE = false; _frame_cnt = 0; _save_cnt = 0; - + while(!_RUN_DONE) Thread::sleep(3); - - save_timer->stop(); + + save_timer->stop(); } } void CamNoiseAnalysis::gui_attach(ofxControlPanel* gui) { - + } void CamNoiseAnalysis::gui_detach() { - + } -//void CamNoiseAnalysis::draw(ofPixels _pixels) //trying to figure out how to get pixels from the RefractiveIndex.cpp +//void CamNoiseAnalysis::draw(ofPixels _pixels) //trying to figure out how to get pixels from the RefractiveIndex.cpp // this runs at frame rate = 33 ms for 30 FPS void CamNoiseAnalysis::draw() { /// *** TODO *** /// - // still need to deal with latency frames here - i.e.: there are frames + // still need to deal with latency frames here - i.e.: there are frames /// *** TODO *** /// - + float _number_of_grey_levels=5; - + float _frames_per_level = _frame_cnt_max / _number_of_grey_levels; ofColor someColor; - + for(int i=0;i<=_number_of_grey_levels;i++){ if (_frame_cnt>= _frames_per_level *( i-1) && +_frame_cnt < _frames_per_level * (i) ) { //set colour to current grey level c=255-( 255.0 * ( i /_number_of_grey_levels)); someColor.set(c); - + } ofSetColor(someColor); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); + ofRect(0, 0, ofGetWidth(), ofGetHeight()); } - + _frame_cnt++; - - + + } // this runs at save_cb timer rate = DELTA_T_SAVE void CamNoiseAnalysis::save_cb(Timer& timer) { _save_cnt++; - + string file_name = ofToString(_save_cnt,2)+"_"+ ofToString(c,2)+"_"+ofToString(_run_cnt,2)+".jpg"; string thisLocation = RefractiveIndex::_location; - - - ofSaveImage(RefractiveIndex::_pixels, _whole_file_path+"/"+file_name, OF_IMAGE_QUALITY_BEST); - + + + ofSaveImage(RefractiveIndex::_pixels, _whole_file_path+"/"+file_name, OF_IMAGE_QUALITY_BEST); + if(_save_cnt >= NUM_SAVE_PER_RUN) _RUN_DONE = true; - -} \ No newline at end of file + +} diff --git a/src/ColorMultiAnalysis.cpp b/src/ColorMultiAnalysis.cpp index ce0b4fc..1804690 100755 --- a/src/ColorMultiAnalysis.cpp +++ b/src/ColorMultiAnalysis.cpp @@ -1,7 +1,7 @@ /* - copyright (c) 2011 Copenhagen Institute of Interaction Design (CIID) - all rights reserved. - + + redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: @@ -11,7 +11,7 @@ + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. - + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS @@ -24,10 +24,10 @@ + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. - + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ author: dviid - ~ contact: dviid@labs.ciid.dk + ~ contact: dviid@labs.ciid.dk */ #include "ColorMultiAnalysis.h" @@ -45,58 +45,67 @@ using Poco::Thread; void ColorMultiAnalysis::setup(int camWidth, int camHeight) { - // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES + // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES + + //FOR WINDOWS i HAVE HAD TO REPLACE SPACES WITH UNDERSCORES AND REDUCE THE LENGTH OF THE FOLDER NAME time_t rawtime; struct tm * timeinfo; - + time ( &rawtime ); timeinfo = localtime ( &rawtime ); - string time = asctime(timeinfo); - - cout<<"time"< save_callback(*this, &ColorMultiAnalysis::save_cb); - - // RUN ROUTINE + + // RUN ROUTINE for(int i = 0; i < NUM_RUN; i++) { - + _run_cnt = i; - + cout << "RUN NUM = " << i; - + save_timer = new Timer(0, DELTA_T_SAVE); // timing interval for saving files - save_timer->start(save_callback); + save_timer->start(save_callback); _RUN_DONE = false; _frame_cnt = 0; _save_cnt = 0; - + while(!_RUN_DONE) Thread::sleep(3); - - save_timer->stop(); + + save_timer->stop(); } } @@ -104,30 +113,30 @@ void ColorMultiAnalysis::synthesize() void ColorMultiAnalysis::gui_attach(ofxControlPanel* gui) { gui->addToggle("GO", "GO", 0); - gui->addButtonSlider("animation time limit", "ANIMATION_TIME_LIMIT", 10, 1, 3000, TRUE); - + gui->addButtonSlider("animation time limit", "ANIMATION_TIME_LIMIT", 10, 1, 3000, TRUE); + } void ColorMultiAnalysis::gui_detach() { - + } void ColorMultiAnalysis::draw() { - + if (_frame_cnt < _frame_cnt_max) { ofColor aColor; aColor.setHsb(c, 255, 255); ofSetColor(aColor); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); + ofRect(0, 0, ofGetWidth(), ofGetHeight()); //how far are we as a percent of _frame_count_max c = 255.0 * (_frame_cnt_max - _frame_cnt)/(_frame_cnt_max); } _frame_cnt++; - + } @@ -136,19 +145,19 @@ void ColorMultiAnalysis::draw() void ColorMultiAnalysis::save_cb(Timer& timer) { _save_cnt++; - + // UPDATE THE COLOR ON THE SCREEN - //float c_last = c; - + //float c_last = c; + cout << "COLORMULTIANALYSIS::saving...\n"; - cout << "c_last... " << c << endl; + cout << "c_last... " << c << endl; string file_name = ofToString(_save_cnt,2)+"_"+ofToString(c,2)+"_"+ofToString(_run_cnt,2)+".jpg"; cout<<_whole_file_path<= NUM_SAVE_PER_RUN){ _RUN_DONE = true; } - + } diff --git a/src/ColorSingleAnalysis.cpp b/src/ColorSingleAnalysis.cpp index 1f6c037..091dd1f 100755 --- a/src/ColorSingleAnalysis.cpp +++ b/src/ColorSingleAnalysis.cpp @@ -1,6 +1,6 @@ /* ~ author: dviid - ~ contact: dviid@labs.ciid.dk + ~ contact: dviid@labs.ciid.dk */ #include "ColorSingleAnalysis.h" @@ -17,31 +17,39 @@ using Poco::Thread; void ColorSingleAnalysis::setup(int camWidth, int camHeight) -{ - // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES - +{ + // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES + + //FOR WINDOWS i HAVE HAD TO REPLACE SPACES WITH UNDERSCORES AND REDUCE THE LENGTH OF THE FOLDER NAME time_t rawtime; struct tm * timeinfo; - + time ( &rawtime ); timeinfo = localtime ( &rawtime ); - string time = asctime(timeinfo); - - cout<<"time"< save_callback(*this, &ColorSingleAnalysis::save_cb); - - // RUN ROUTINE + + // RUN ROUTINE for(int i = 0; i < NUM_RUN; i++) { - + _run_cnt = i; - + cout << "RUN NUM = " << i; - + save_timer = new Timer(0, DELTA_T_SAVE); // timing interval for saving files - save_timer->start(save_callback); + save_timer->start(save_callback); _RUN_DONE = false; _frame_cnt = 0; _save_cnt = 0; - + while(!_RUN_DONE) Thread::sleep(3); - - save_timer->stop(); + + save_timer->stop(); } } void ColorSingleAnalysis::gui_attach(ofxControlPanel* gui) { - + } void ColorSingleAnalysis::gui_detach() { - + } @@ -96,26 +104,26 @@ void ColorSingleAnalysis::draw() g=0.0; b=0.0; ofSetColor(r,g,b); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); + ofRect(0, 0, ofGetWidth(), ofGetHeight()); } if (_frame_cnt >= one_third_of_frame_count_max && _frame_cnt < 2*one_third_of_frame_count_max){ r=0.0; g=255.0; b=0.0; ofSetColor(r,g,b); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); + ofRect(0, 0, ofGetWidth(), ofGetHeight()); } if (_frame_cnt >= 2*one_third_of_frame_count_max && _frame_cnt < _frame_cnt_max){ r=0.0; g=0.0; b=255.0; ofSetColor(r,g,b); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); + ofRect(0, 0, ofGetWidth(), ofGetHeight()); } - + _frame_cnt++; - - + + } // this runs at save_cb timer rate = DELTA_T_SAVE @@ -123,15 +131,15 @@ void ColorSingleAnalysis::save_cb(Timer& timer) { _save_cnt++; - + cout << "ColorSingleAnalysis::saving...\n"; string file_name =ofToString(_frame_cnt,2)+"_"+ofToString((int)r,2)+"_"+ofToString((int)g,2)+"_"+ofToString((int)b,2)+"_"+ofToString(_run_cnt,2)+".jpg"; - - - ofSaveImage(RefractiveIndex::_pixels, _whole_file_path+"/"+file_name, OF_IMAGE_QUALITY_BEST); + + + ofSaveImage(RefractiveIndex::_pixels, _whole_file_path+"/"+file_name, OF_IMAGE_QUALITY_BEST); cout<<_whole_file_path+"/"+file_name<= NUM_SAVE_PER_RUN) _RUN_DONE = true; - -} \ No newline at end of file + +} diff --git a/src/DiffNoiseAnalysis.cpp b/src/DiffNoiseAnalysis.cpp index 2994ea7..6ba13bb 100755 --- a/src/DiffNoiseAnalysis.cpp +++ b/src/DiffNoiseAnalysis.cpp @@ -1,6 +1,6 @@ /* ~ author: dviid - ~ contact: dviid@labs.ciid.dk + ~ contact: dviid@labs.ciid.dk */ #include "DiffNoiseAnalysis.h" @@ -17,30 +17,39 @@ using Poco::Thread; void DiffNoiseAnalysis::setup(int camWidth, int camHeight) -{ +{ + // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES + + //FOR WINDOWS i HAVE HAD TO REPLACE SPACES WITH UNDERSCORES AND REDUCE THE LENGTH OF THE FOLDER NAME time_t rawtime; struct tm * timeinfo; - + time ( &rawtime ); timeinfo = localtime ( &rawtime ); - string time = asctime(timeinfo); - - cout<<"time"< save_callback(*this, &DiffNoiseAnalysis::save_cb); - - // RUN ROUTINE + + // RUN ROUTINE for(int i = 0; i < NUM_RUN; i++) { - + _run_cnt = i; - + cout << "RUN NUM = " << i; - + save_timer = new Timer(0, DELTA_T_SAVE); // timing interval for saving files - save_timer->start(save_callback); + save_timer->start(save_callback); _RUN_DONE = false; _frame_cnt = 0; _save_cnt = 0; - + while(!_RUN_DONE) Thread::sleep(3); - - save_timer->stop(); + + save_timer->stop(); } } void DiffNoiseAnalysis::gui_attach(ofxControlPanel* gui) { - + } void DiffNoiseAnalysis::gui_detach() { - + } -//void DiffNoiseAnalysis::draw(ofPixels _pixels) //trying to figure out how to get pixels from the RefractiveIndex.cpp +//void DiffNoiseAnalysis::draw(ofPixels _pixels) //trying to figure out how to get pixels from the RefractiveIndex.cpp // this runs at frame rate = 33 ms for 30 FPS void DiffNoiseAnalysis::draw() { /// *** TODO *** /// - // still need to deal with latency frames here - i.e.: there are frames + // still need to deal with latency frames here - i.e.: there are frames /// *** TODO *** /// ofColor aColour; - + c = ofRandom(0,255); - aColour.setHsb(c, 255, 255); + aColour.setHsb(c, 255, 255); if (_frame_cnt < _frame_cnt_max) { ofSetColor(aColour); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); - + ofRect(0, 0, ofGetWidth(), ofGetHeight()); + } _frame_cnt++; - - + + } // this runs at save_cb timer rate = DELTA_T_SAVE void DiffNoiseAnalysis::save_cb(Timer& timer) { - - + + float rand10 = ofRandom(0,10); - + if (rand10 > 5.0) { - + cout << "DiffNoiseAnalysis::saving...\n"; - cout << "c_last... " << c << endl; + cout << "c_last... " << c << endl; cout<<"rand10... " <= NUM_SAVE_PER_RUN) _RUN_DONE = true; - -} \ No newline at end of file + +} diff --git a/src/IResponseAnalysis.cpp b/src/IResponseAnalysis.cpp index 4d1a03d..03373ec 100755 --- a/src/IResponseAnalysis.cpp +++ b/src/IResponseAnalysis.cpp @@ -1,6 +1,6 @@ /* ~ author: dviid - ~ contact: dviid@labs.ciid.dk + ~ contact: dviid@labs.ciid.dk */ #include "IResponseAnalysis.h" @@ -17,31 +17,39 @@ using Poco::Thread; void IResponseAnalysis::setup(int camWidth, int camHeight) -{ - // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES +{ + // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES + + //FOR WINDOWS i HAVE HAD TO REPLACE SPACES WITH UNDERSCORES AND REDUCE THE LENGTH OF THE FOLDER NAME time_t rawtime; struct tm * timeinfo; - + time ( &rawtime ); timeinfo = localtime ( &rawtime ); - string time = asctime(timeinfo); - - cout<<"time"< save_callback(*this, &IResponseAnalysis::save_cb); - - // RUN ROUTINE + + // RUN ROUTINE for(int i = 0; i < NUM_RUN; i++) { - + _run_cnt = i; - + cout << "RUN NUM = " << i; - + save_timer = new Timer(0, DELTA_T_SAVE); // timing interval for saving files - save_timer->start(save_callback); + save_timer->start(save_callback); _RUN_DONE = false; _frame_cnt = 0; _save_cnt = 0; - + while(!_RUN_DONE) Thread::sleep(3); - - save_timer->stop(); + + save_timer->stop(); } } void IResponseAnalysis::gui_attach(ofxControlPanel* gui) { - + } void IResponseAnalysis::gui_detach() { - + } -//void IResponseAnalysis::draw(ofPixels _pixels) //trying to figure out how to get pixels from the RefractiveIndex.cpp +//void IResponseAnalysis::draw(ofPixels _pixels) //trying to figure out how to get pixels from the RefractiveIndex.cpp // this runs at frame rate = 33 ms for 30 FPS void IResponseAnalysis::draw() { /// *** TODO *** /// - // still need to deal with latency frames here - i.e.: there are frames + // still need to deal with latency frames here - i.e.: there are frames /// *** TODO *** /// - + if (_frame_cnt < _frame_cnt_max) { ofSetColor(c, c, c); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); + ofRect(0, 0, ofGetWidth(), ofGetHeight()); c = 255.0 * (_frame_cnt_max - _frame_cnt)/(_frame_cnt_max); } _frame_cnt++; - - + + } // this runs at save_cb timer rate = DELTA_T_SAVE void IResponseAnalysis::save_cb(Timer& timer) { _save_cnt++; - + // UPDATE THE COLOR ON THE SCREEN - //float c_last = c; - + //float c_last = c; + cout << "IResponseAnalysis::saving...\n"; - cout << "c_last... " << c << endl; + cout << "c_last... " << c << endl; string file_name = ofToString(_save_cnt,2)+"_"+ ofToString(c,2)+"_"+ofToString(_run_cnt,2)+".jpg"; string thisLocation = RefractiveIndex::_location; - - //RefractiveIndex::_pixels = RefractiveIndex::_vidGrabber.getPixelsRef(); //get ofPixels from the camera + + //RefractiveIndex::_pixels = RefractiveIndex::_vidGrabber.getPixelsRef(); //get ofPixels from the camera // fileName = imageSaveFolderPath+whichAnalysis+"_"+ofToString(100.0*i*scanLineSpeed/ofGetHeight(),2)+"%_"+ofToString(i)+".jpg"; //ofSaveImage(vectorOfPixels[i], fileName, OF_IMAGE_QUALITY_BEST); - - ofSaveImage(RefractiveIndex::_pixels, _whole_file_path+"/"+file_name, OF_IMAGE_QUALITY_BEST); - + + ofSaveImage(RefractiveIndex::_pixels, _whole_file_path+"/"+file_name, OF_IMAGE_QUALITY_BEST); + if(_save_cnt >= NUM_SAVE_PER_RUN) _RUN_DONE = true; - -} \ No newline at end of file + +} diff --git a/src/LatencyTestAnalysis.cpp b/src/LatencyTestAnalysis.cpp index cf1ad29..67a0fec 100755 --- a/src/LatencyTestAnalysis.cpp +++ b/src/LatencyTestAnalysis.cpp @@ -1,6 +1,6 @@ /* ~ author: dviid - ~ contact: dviid@labs.ciid.dk + ~ contact: dviid@labs.ciid.dk */ #include "LatencyTestAnalysis.h" @@ -17,31 +17,39 @@ using Poco::Thread; void LatencyTestAnalysis::setup(int camWidth, int camHeight) -{ - // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES +{ + // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES + + //FOR WINDOWS i HAVE HAD TO REPLACE SPACES WITH UNDERSCORES AND REDUCE THE LENGTH OF THE FOLDER NAME time_t rawtime; struct tm * timeinfo; - + time ( &rawtime ); timeinfo = localtime ( &rawtime ); - string time = asctime(timeinfo); - - cout<<"time"< save_callback(*this, &LatencyTestAnalysis::save_cb); - - // RUN ROUTINE + + // RUN ROUTINE for(int i = 0; i < NUM_RUN; i++) { - + _run_cnt = i; - + cout << "RUN NUM = " << i; - + save_timer = new Timer(0, DELTA_T_SAVE); // timing interval for saving files - save_timer->start(save_callback); + save_timer->start(save_callback); _RUN_DONE = false; _frame_cnt = 0; _save_cnt = 0; - + while(!_RUN_DONE) Thread::sleep(3); - - save_timer->stop(); + + save_timer->stop(); } } void LatencyTestAnalysis::gui_attach(ofxControlPanel* gui) { - + } void LatencyTestAnalysis::gui_detach() { - + } -//void LatencyTestAnalysis::draw(ofPixels _pixels) //trying to figure out how to get pixels from the RefractiveIndex.cpp +//void LatencyTestAnalysis::draw(ofPixels _pixels) //trying to figure out how to get pixels from the RefractiveIndex.cpp // this runs at frame rate = 33 ms for 30 FPS void LatencyTestAnalysis::draw() { /// *** TODO *** /// - // still need to deal with latency frames here - i.e.: there are frames + // still need to deal with latency frames here - i.e.: there are frames /// *** TODO *** /// - + if (_frame_cnt < _frame_cnt_max/3) { c = 0; ofSetColor(c, c, c); cout<<"1st third"<= _frame_cnt_max/3 && _frame_cnt < 2*( _frame_cnt_max/3)) { @@ -108,7 +116,7 @@ void LatencyTestAnalysis::draw() cout<<"2nd third"<= 2*( _frame_cnt_max/3) && _frame_cnt < _frame_cnt_max) { @@ -116,33 +124,33 @@ void LatencyTestAnalysis::draw() cout<<"3rd third"<= NUM_SAVE_PER_RUN) _RUN_DONE = true; - -} \ No newline at end of file + +} diff --git a/src/ShadowScapesAnalysis.cpp b/src/ShadowScapesAnalysis.cpp index d0f5b10..11205b6 100755 --- a/src/ShadowScapesAnalysis.cpp +++ b/src/ShadowScapesAnalysis.cpp @@ -1,7 +1,7 @@ /* - copyright (c) 2011 Copenhagen Institute of Interaction Design (CIID) - all rights reserved. - + + redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: @@ -11,7 +11,7 @@ + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. - + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS @@ -24,10 +24,10 @@ + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. - + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ author: dviid - ~ contact: dviid@labs.ciid.dk + ~ contact: dviid@labs.ciid.dk */ #include "ShadowScapesAnalysis.h" @@ -46,27 +46,38 @@ using Poco::Thread; void ShadowScapesAnalysis::setup(int camWidth, int camHeight) { + // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES + + //FOR WINDOWS i HAVE HAD TO REPLACE SPACES WITH UNDERSCORES AND REDUCE THE LENGTH OF THE FOLDER NAME time_t rawtime; struct tm * timeinfo; - + time ( &rawtime ); timeinfo = localtime ( &rawtime ); - string time = asctime(timeinfo); - - cout<<"time"< strobe_callback(*this, &ShadowScapesAnalysis::scan_cb); - + _state = STATE_SCAN; - + scan_timer.start(strobe_callback); - + while(_state != STATE_ANALYSIS) Thread::sleep(5); - + scan_timer.stop(); // do analysis here - // go back to the files i've saved and do the math here - + // go back to the files i've saved and do the math here - while(_state != STATE_STOP) Thread::sleep(100); - + } void ShadowScapesAnalysis::gui_attach(ofxControlPanel* gui) { gui->addToggle("GO", "GO", 0); - gui->addButtonSlider("animation time limit", "ANIMATION_TIME_LIMIT", 10, 1, 3000, TRUE); - + gui->addButtonSlider("animation time limit", "ANIMATION_TIME_LIMIT", 10, 1, 3000, TRUE); + } void ShadowScapesAnalysis::gui_detach() { - - + + } -// the animation draw - and the output draw +// the animation draw - and the output draw void ShadowScapesAnalysis::draw() { - + static int _pos; - + if(_state == STATE_ANALYSIS) { - ofSetColor(0, 200, 0); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); + ofSetColor(0, 200, 0); + ofRect(0, 0, ofGetWidth(), ofGetHeight()); return; } - + if(_state == STATE_SCAN) { if(_pos != _line) { //take snap?? _pos = _line; } - ofSetColor(255, 255, 255); - + ofSetColor(255, 255, 255); + if(_dir == H) ofRect(_pos, 0, 50, ofGetHeight()); else if(_dir == V) ofRect(0, _pos, ofGetWidth(), 50); - + } - - + + } void ShadowScapesAnalysis::scan_cb(Timer& timer) { cout << "ShadowScapesAnalysis::scan_cb\n"; - + _line += _step; - - if((_dir == H && _line >= ofGetWidth()) || - (_dir == V && _line >= ofGetHeight())) { + + if((_dir == H && _line >= ofGetWidth()) || + (_dir == V && _line >= ofGetHeight())) { _state = STATE_ANALYSIS; } - - + + } diff --git a/src/StrobeAnalysis.cpp b/src/StrobeAnalysis.cpp index d850fda..a8b7e52 100755 --- a/src/StrobeAnalysis.cpp +++ b/src/StrobeAnalysis.cpp @@ -1,7 +1,7 @@ /* - copyright (c) 2011 Copenhagen Institute of Interaction Design (CIID) - all rights reserved. - + + redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: @@ -11,7 +11,7 @@ + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. - + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS @@ -24,10 +24,10 @@ + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. - + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ author: dviid - ~ contact: dviid@labs.ciid.dk + ~ contact: dviid@labs.ciid.dk */ #include "StrobeAnalysis.h" @@ -45,53 +45,59 @@ using Poco::Thread; void StrobeAnalysis::setup(int camWidth, int camHeight) { - //AbstractAnalysis::setup(camWidth, camHeight); - //_lastTime = ofGetElapsedTimeMillis(); - // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES - + // HERE IS WHERE WE SETUP THE DIRECTORY FOR ALL THE SAVED IMAGES + + //FOR WINDOWS i HAVE HAD TO REPLACE SPACES WITH UNDERSCORES AND REDUCE THE LENGTH OF THE FOLDER NAME time_t rawtime; struct tm * timeinfo; - + time ( &rawtime ); timeinfo = localtime ( &rawtime ); - string time = asctime(timeinfo); - - cout<<"time"< strobe_callback(*this, &StrobeAnalysis::strobe_cb); - + _state = STATE_STROBE; _darkness = true; - _strobe_cnt = 0; - + _strobe_cnt = 0; + strobe_timer.start(strobe_callback); - + while(_state != STATE_ANALYSIS) Thread::sleep(5); - + strobe_timer.stop(); - + // do analysis here - + while(_state != STATE_STOP) Thread::sleep(100); } @@ -99,29 +105,29 @@ void StrobeAnalysis::synthesize() void StrobeAnalysis::gui_attach(ofxControlPanel* gui) { gui->addToggle("GO", "GO", 0); - gui->addButtonSlider("animation time limit", "ANIMATION_TIME_LIMIT", 10, 1, 3000, TRUE); - + gui->addButtonSlider("animation time limit", "ANIMATION_TIME_LIMIT", 10, 1, 3000, TRUE); + } void StrobeAnalysis::gui_detach() { - + } void StrobeAnalysis::draw() { if(_state == STATE_ANALYSIS) { - ofSetColor(0, 200, 0); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); + ofSetColor(0, 200, 0); + ofRect(0, 0, ofGetWidth(), ofGetHeight()); return; } - + if(_darkness) { - ofSetColor(0, 0, 0); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); + ofSetColor(0, 0, 0); + ofRect(0, 0, ofGetWidth(), ofGetHeight()); } else { ofSetColor(255, 255, 255); - ofRect(0, 0, ofGetWidth(), ofGetHeight()); + ofRect(0, 0, ofGetWidth(), ofGetHeight()); } } @@ -131,10 +137,10 @@ void StrobeAnalysis::strobe_cb(Timer& timer) { cout << "IResponseAnalysis::saving...\n"; _strobe_cnt++; - + _darkness = !_darkness; - - if(_strobe_cnt >= 20) { + + if(_strobe_cnt >= 20) { _state = STATE_ANALYSIS; }