now able to show images in the analysis classes!!

wooo hooo!!!
This commit is contained in:
Jamie Allen 2012-02-21 01:01:49 +01:00
parent 51c71bdc15
commit e17a3a0d91
7 changed files with 89 additions and 44 deletions

View File

@ -24,6 +24,7 @@
#include "DiffNoiseAnalysis.h" #include "DiffNoiseAnalysis.h"
#include "ofxXmlSettings.h" #include "ofxXmlSettings.h"
#include "ofxOpenCv.h"
#define CAMERA_ID 1 #define CAMERA_ID 1
#define CAMERA_ACQU_WIDTH 640 #define CAMERA_ACQU_WIDTH 640
@ -53,15 +54,17 @@ void RefractiveIndex::setup()
bool save_config = false; bool save_config = false;
cout << "Loading configuration..." << endl; cout << "Loading configuration..." << endl;
if(!XML.loadFile("../data/config.refindx")) { if(XML.loadFile("config.refindx") == false) {
ofLog(OF_LOG_ERROR) << "error loading config - using default."; ofLog(OF_LOG_ERROR) << "error loading config - using default.";
save_config = true; save_config = true;
} else {
XML.loadFile("config.refindx");
} }
// <camera> // <camera>
_vid_id = XML.getValue("config:camera:id", CAMERA_ID); _vid_id = XML.getValue("config:camera:id", CAMERA_ID);
_vid_w = XML.getValue("config:camera:width", CAMERA_ACQU_WIDTH); _vid_w = XML.getValue("config:camera:width", CAMERA_ACQU_WIDTH);
_vid_h = XML.getValue("config:camera:height", CAMERA_ACQU_HEIGHT); _vid_h = XML.getValue("config:camera:height", CAMERA_ACQU_HEIGHT);
// <display> // <display>
int fps = XML.getValue("config:display:fps", 30); int fps = XML.getValue("config:display:fps", 30);
@ -102,25 +105,25 @@ void RefractiveIndex::setup()
//TODO: whichever one of these is first - it always runs twice ? //TODO: whichever one of these is first - it always runs twice ?
_analysisVector.push_back(new ShadowScapesAnalysis(V)); // _analysisVector.push_back(new ShadowScapesAnalysis(V));
_analysisVector.push_back(new ShadowScapesAnalysis(H)); // _analysisVector.push_back(new ShadowScapesAnalysis(H));
_analysisVector.push_back(new ShadowScapesAnalysis(D)); // _analysisVector.push_back(new ShadowScapesAnalysis(D));
_analysisVector.push_back(new RelaxRateAnalysis()); // _analysisVector.push_back(new RelaxRateAnalysis());
_analysisVector.push_back(new IResponseAnalysis()); // _analysisVector.push_back(new IResponseAnalysis());
_analysisVector.push_back(new ShapeFromShadingAnalysis()); _analysisVector.push_back(new ShapeFromShadingAnalysis());
_analysisVector.push_back(new StrobeAnalysis()); // _analysisVector.push_back(new StrobeAnalysis());
_analysisVector.push_back(new CamNoiseAnalysis()); // _analysisVector.push_back(new CamNoiseAnalysis());
_analysisVector.push_back(new ColorSingleAnalysis()); // _analysisVector.push_back(new ColorSingleAnalysis());
_analysisVector.push_back(new ColorMultiAnalysis()); // _analysisVector.push_back(new ColorMultiAnalysis());
_analysisVector.push_back(new DiffNoiseAnalysis()); // _analysisVector.push_back(new DiffNoiseAnalysis());
_currentAnalysisIndx = 0; _currentAnalysisIndx = 0;
_currentAnalysis = _analysisVector.at(_currentAnalysisIndx); _currentAnalysis = _analysisVector.at(_currentAnalysisIndx);

View File

@ -11,8 +11,10 @@ int main() {
ofAppGlutWindow window; ofAppGlutWindow window;
ofxXmlSettings XML; ofxXmlSettings XML;
XML.loadFile("../data/config.refindx"); XML.loadFile("../data/config.refindx");
bool fullscreen = (XML.getValue("config:display:fullscreen", "true") == "true" ? true : false);
bool fullscreen = (XML.getValue("config:display:fullscreen", "false") == "true" ? true : false);
int screen_w = XML.getValue("config:display:width", SCREEN_WIDTH); int screen_w = XML.getValue("config:display:width", SCREEN_WIDTH);
int screen_h = XML.getValue("config:display:height", SCREEN_HEIGHT); int screen_h = XML.getValue("config:display:height", SCREEN_HEIGHT);
@ -25,5 +27,4 @@ int main() {
ofSetupOpenGL(&window, screen_w, screen_h, (fullscreen ? OF_FULLSCREEN : OF_WINDOW)); ofSetupOpenGL(&window, screen_w, screen_h, (fullscreen ? OF_FULLSCREEN : OF_WINDOW));
ofRunApp(new RefractiveIndex()); ofRunApp(new RefractiveIndex());
} }

View File

@ -41,8 +41,7 @@ void AbstractAnalysis::do_synthesize() {
_state = STATE_SYNTHESISING; _state = STATE_SYNTHESISING;
synthesise(); synthesise();
_state = STATE_DISPLAY_RESULTS; _state = STATE_DISPLAY_RESULTS;
displayresults();
//displayresults();
ofNotifyEvent(_synthesize_cb, _name); ofNotifyEvent(_synthesize_cb, _name);
} }

View File

@ -39,6 +39,7 @@ protected:
// analysis + synthesize images - all the children (see - do_synthesize) // analysis + synthesize images - all the children (see - do_synthesize)
virtual void synthesise() = 0; virtual void synthesise() = 0;
virtual void displayresults() = 0;
public: public:

View File

@ -31,13 +31,11 @@ void RelaxRateAnalysis::setup(int camWidth, int camHeight)
int anim_time = 5; // 10 seconds int anim_time = 5; // 10 seconds
_anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames _anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames
} }
void RelaxRateAnalysis::acquire() void RelaxRateAnalysis::acquire()
{ {
Timer* save_timer; Timer* save_timer;
TimerCallback<RelaxRateAnalysis> save_callback(*this, &RelaxRateAnalysis::save_cb); TimerCallback<RelaxRateAnalysis> save_callback(*this, &RelaxRateAnalysis::save_cb);

View File

@ -10,11 +10,8 @@ using Poco::Timer;
using Poco::TimerCallback; using Poco::TimerCallback;
using Poco::Thread; using Poco::Thread;
void ShapeFromShadingAnalysis::setup(int camWidth, int camHeight) void ShapeFromShadingAnalysis::setup(int camWidth, int camHeight)
{ {
NUM_RUN = 1; NUM_RUN = 1;
int acq_run_time = 20; // 20 seconds of acquiring per run int acq_run_time = 20; // 20 seconds of acquiring per run
@ -32,6 +29,13 @@ void ShapeFromShadingAnalysis::setup(int camWidth, int camHeight)
int anim_time = 5; // 10 seconds int anim_time = 5; // 10 seconds
_anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames _anim_cnt_max = anim_time*ofGetFrameRate(); // e.g.: 30 frames per second = 150 frames
_show_image = false;
_image_shown = false;
image2.allocate(RefractiveIndex::_vid_w, RefractiveIndex::_vid_h);
image1.setUseTexture(false);
image2.setUseTexture(true);
} }
@ -85,11 +89,36 @@ void ShapeFromShadingAnalysis::acquire()
void ShapeFromShadingAnalysis::synthesise() void ShapeFromShadingAnalysis::synthesise()
{ {
// _saved_filenames has all the file names of all the saved images
while(!_RUN_DONE) while(!_RUN_DONE)
Thread::sleep(3); Thread::sleep(3);
} }
void ShapeFromShadingAnalysis::displayresults()
{
for(float i=1;i<_saved_filenames.size();i++){
cout << "_saved_filenames[i]" << _saved_filenames[i] << endl;
while(!_image_shown){
Thread::sleep(2);
//cout << "!_image_shown" << endl;
}
if(!image1.loadImage(_saved_filenames[i])){
//couldn't load image
cout << "didn't load image" << endl;
}
if(image1.loadImage(_saved_filenames[i])){
image1.loadImage(_saved_filenames[i]);
//cout << "_show_image = true;" << endl;
_show_image = true;
_image_shown = false;
}
}
}
// this runs at frame rate = 33 ms for 30 FPS // this runs at frame rate = 33 ms for 30 FPS
void ShapeFromShadingAnalysis::draw() void ShapeFromShadingAnalysis::draw()
{ {
@ -102,23 +131,10 @@ void ShapeFromShadingAnalysis::draw()
ofEnableAlphaBlending(); ofEnableAlphaBlending();
int _quarter_frame_cnt_max = _frame_cnt_max/4; int _quarter_frame_cnt_max = _frame_cnt_max/4;
int _half_frame_cnt_max = _frame_cnt_max/2; int _half_frame_cnt_max = _frame_cnt_max/2;
int _threequarters_frame_cnt_max = 3*_frame_cnt_max/4; int _threequarters_frame_cnt_max = 3*_frame_cnt_max/4;
//TODO: put in CROSS FADES, ETC§E
/*
if (_animation_reset == true)
{
_animation_cnt1 = 0;
_animation_cnt2 = 0;
_animation_cnt3 = 0;
_animation_cnt4 = 0;
}
*/
if(_frame_cnt < _quarter_frame_cnt_max) { if(_frame_cnt < _quarter_frame_cnt_max) {
quad = "QUAD1"; quad = "QUAD1";
@ -259,10 +275,6 @@ void ShapeFromShadingAnalysis::draw()
_animation_cnt12++; _animation_cnt12++;
} }
} }
@ -316,6 +328,7 @@ void ShapeFromShadingAnalysis::draw()
ofDisableAlphaBlending(); ofDisableAlphaBlending();
} else { } else {
//_state = STATE_SYNTHESISING; //_state = STATE_SYNTHESISING;
_frame_cnt = 0;
_RUN_DONE = true; _RUN_DONE = true;
} }
@ -408,8 +421,31 @@ void ShapeFromShadingAnalysis::draw()
break; break;
} }
case STATE_DISPLAY_RESULTS: case STATE_DISPLAY_RESULTS:
{ {
if (_frame_cnt > 2)
{
_image_shown = true;
_frame_cnt=0;
}
_frame_cnt++;
if (_show_image)
{
ofEnableAlphaBlending();
ofSetColor(255, 255, 255, 255);
image2.setFromPixels(image1.getPixels(),image1.width,image1.height, OF_IMAGE_COLOR);
image2.draw(0,0, ofGetWidth(), ofGetHeight());
ofDisableAlphaBlending();
}
// display results of the synthesis // display results of the synthesis
_RUN_DONE = true; _RUN_DONE = true;
break; break;

View File

@ -21,6 +21,7 @@ public:
void setup(int camWidth, int camHeight); void setup(int camWidth, int camHeight);
void acquire(); void acquire();
void synthesise(); void synthesise();
void displayresults();
void draw(); void draw();
void save_cb(Poco::Timer& timer); void save_cb(Poco::Timer& timer);
@ -50,4 +51,10 @@ protected:
int _run_cnt, _save_cnt, _anim_cnt; int _run_cnt, _save_cnt, _anim_cnt;
float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max; float c, _frame_cnt, _frame_cnt_max, _anim_cnt_max;
bool _show_image, _image_shown;
ofImage image1;
ofxCvImage image2;
}; };