1 Commits

Author SHA1 Message Date
dviid ab6c3d5be5 unloading images 2012-04-06 13:21:58 +02:00
16 changed files with 201 additions and 228 deletions
-1
View File
@@ -1,7 +1,6 @@
<!-- THIS FILE NEEDS TO GO IN THE APPLICATION /data/ folder --> <!-- THIS FILE NEEDS TO GO IN THE APPLICATION /data/ folder -->
<config> <config>
<mode>drawing</mode>
<camera> <camera>
<id>1</id> <id>1</id>
<width>640</width> <width>640</width>
-12
View File
@@ -27,10 +27,8 @@
#define ISTATE_TRANSITION 0xCCCC #define ISTATE_TRANSITION 0xCCCC
#define ISTATE_END 0xDDDD #define ISTATE_END 0xDDDD
int _state = ISTATE_UNDEF; int _state = ISTATE_UNDEF;
int RefractiveIndex::_mode;
ofPixels RefractiveIndex::_pixels; ofPixels RefractiveIndex::_pixels;
ofVideoGrabber RefractiveIndex::_vidGrabber; ofVideoGrabber RefractiveIndex::_vidGrabber;
int RefractiveIndex::_vid_w, RefractiveIndex::_vid_h, RefractiveIndex::_vid_id; int RefractiveIndex::_vid_w, RefractiveIndex::_vid_h, RefractiveIndex::_vid_id;
@@ -52,10 +50,6 @@ void RefractiveIndex::setup()
XML.loadFile("config.refindx"); XML.loadFile("config.refindx");
} }
// <mode>
string m = XML.getValue("config:mode", "analysing");
_mode = (m == "analysing" ? MODE_ANALYSING : (m == "drawing" ? MODE_DRAWING : MODE_ANALYSING));
// <camera> // <camera>
_vid_id = XML.getValue("config:camera:id", CAMERA_ID); _vid_id = XML.getValue("config:camera:id", CAMERA_ID);
cout << "_vid_id: " << _vid_id << endl; cout << "_vid_id: " << _vid_id << endl;
@@ -88,10 +82,8 @@ void RefractiveIndex::setup()
cout << "* cam width = " << _vid_w << endl; cout << "* cam width = " << _vid_w << endl;
cout << "* cam height = " << _vid_h << endl; cout << "* cam height = " << _vid_h << endl;
if(_mode == MODE_ANALYSING) {
_vid_stream_open = false; _vid_stream_open = false;
setup_camera(); setup_camera();
}
cout << "RRRRRREADY!" << endl; cout << "RRRRRREADY!" << endl;
@@ -181,13 +173,9 @@ void RefractiveIndex::state_analysis()
break; break;
case ISTATE_STOP: case ISTATE_STOP:
stop_analysis(); // blocking stop_analysis(); // blocking
if(_mode == MODE_DRAWING)
_state = ISTATE_UNDEF;
else
_state = ISTATE_TRANSITION; _state = ISTATE_TRANSITION;
break; break;
case ISTATE_END: case ISTATE_END:
if(_mode == MODE_ANALYSING)
stop_camera(); stop_camera();
::exit(1); ::exit(1);
break; break;
-5
View File
@@ -11,9 +11,6 @@
#include "ofxOpenCv.h" #include "ofxOpenCv.h"
#include "ofxXmlSettings.h" #include "ofxXmlSettings.h"
#define MODE_DRAWING 0xEEFF
#define MODE_ANALYSING 0xFFEE
class RefractiveIndex : public ofBaseApp class RefractiveIndex : public ofBaseApp
{ {
public: public:
@@ -58,8 +55,6 @@ public:
// acquisition // acquisition
static ofPixels _pixels; static ofPixels _pixels;
static ofVideoGrabber _vidGrabber; static ofVideoGrabber _vidGrabber;
static int _mode;
vector<string> videoSourceList; vector<string> videoSourceList;
static int _vid_w, _vid_h, _vid_id; static int _vid_w, _vid_h, _vid_id;
static bool _vid_stream_open; static bool _vid_stream_open;
+5 -93
View File
@@ -3,32 +3,10 @@
#include "AbstractAnalysis.h" #include "AbstractAnalysis.h"
#include "RefractiveIndex.h" #include "RefractiveIndex.h"
#include "ofxFileHelper.h" #include "ofxFileHelper.h"
#include "ofSystemUtils.h"
void AbstractAnalysis::setup(int camWidth, int camHeight) {
_cam_w = camWidth; _cam_h = camHeight;
if(RefractiveIndex::_mode == MODE_DRAWING) {
ofFileDialogResult r = ofSystemLoadDialog("choooose da folda", true);
if(!r.bSuccess) {
ofSystemAlertDialog("OOOOPS.... ERROR...");
return;
}
_whole_file_path_analysis = r.filePath;
_whole_file_path_synthesis = r.filePath + "/darwings";
}
}
// this is the main threaded loop for a given analysis // this is the main threaded loop for a given analysis
void AbstractAnalysis::do_synthesize() { void AbstractAnalysis::do_synthesize() {
switch(RefractiveIndex::_mode)
{
case MODE_ANALYSING:
{
for(int i = 0; i < NUM_RUN; i++) { for(int i = 0; i < NUM_RUN; i++) {
cout << "NUM_RUN: " << i << endl; cout << "NUM_RUN: " << i << endl;
@@ -36,6 +14,10 @@ void AbstractAnalysis::do_synthesize() {
_saved_filenames_analysis.clear(); _saved_filenames_analysis.clear();
_saved_filenames_synthesis.clear(); _saved_filenames_synthesis.clear();
if(_state == STATE_STOP) goto exit;
_state = STATE_ALLOCATE;
allocate();
if(_state == STATE_STOP) goto exit;
_state = STATE_ACQUIRING; _state = STATE_ACQUIRING;
acquire(); acquire();
if(_state == STATE_STOP) goto exit; if(_state == STATE_STOP) goto exit;
@@ -44,31 +26,13 @@ void AbstractAnalysis::do_synthesize() {
if(_state == STATE_STOP) goto exit; if(_state == STATE_STOP) goto exit;
_state = STATE_DISPLAY_RESULTS; _state = STATE_DISPLAY_RESULTS;
displayresults(); displayresults();
_state = STATE_CLEANUP;
cleanup(); cleanup();
} }
}
case MODE_DRAWING:
{
ofxFileHelper fileHelperDrawing;
if(!fileHelperDrawing.doesDirectoryExist(_whole_file_path_synthesis)){
fileHelperDrawing.makeDirectory(_whole_file_path_synthesis);
}
read_dir_create_list(_whole_file_path_analysis);
_state = STATE_SYNTHESISING;
synthesise();
if(_state == STATE_STOP) goto exit;
_state = STATE_DISPLAY_RESULTS;
displayresults();
cleanup();
}
}
exit: exit:
cleanup(); cleanup();
ofNotifyEvent(_synthesize_cb, _name); ofNotifyEvent(_synthesize_cb, _name);
} }
void AbstractAnalysis::create_dir_allocate_images() void AbstractAnalysis::create_dir_allocate_images()
@@ -157,57 +121,6 @@ void AbstractAnalysis::create_dir_allocate_images()
} }
bool cmp_file(string f0, string f1)
{
int v0 = atoi(f0.substr(0, f0.find("_")).c_str());
int v1 = atoi(f1.substr(0, f1.find("_")).c_str());
return v0 < v1;
}
void AbstractAnalysis::read_dir_create_list(string folder_path)
{
File dir(folder_path);
if(dir.exists() && dir.isDirectory()) {
vector<string> list;
dir.list(list);
std::sort(list.begin(), list.end(), cmp_file);
for(int i = 0; i < list.size(); i++) {
string filepath = folder_path + "/" + list[i];
_saved_filenames_analysis.push_back(filepath);
}
}
}
void AbstractAnalysis::saveImageAnalysis(string filename) void AbstractAnalysis::saveImageAnalysis(string filename)
{ {
@@ -273,6 +186,5 @@ void AbstractAnalysis::saveImageSynthesis(string filename, ofxCvImage* newPixels
_saved_filenames_synthesis.push_back(_whole_file_path_synthesis+"/"+filename); _saved_filenames_synthesis.push_back(_whole_file_path_synthesis+"/"+filename);
} }
+8 -5
View File
@@ -13,10 +13,13 @@
#define ANALYSIS_PATH "analysis/" #define ANALYSIS_PATH "analysis/"
#define SYNTHESIS_PATH "synthesis/" #define SYNTHESIS_PATH "synthesis/"
#define STATE_ALLOCATE 0x0010
#define STATE_CLEANUP 0x0001
#define STATE_ACQUIRING 0x1111 #define STATE_ACQUIRING 0x1111
#define STATE_SYNTHESISING 0x2222 #define STATE_SYNTHESISING 0x2222
#define STATE_DISPLAY_RESULTS 0x3333 #define STATE_DISPLAY_RESULTS 0x3333
#define STATE_STOP 0xDEADBEEF #define STATE_STOP 0xDEADBEEF
#define STATE_DEF 0x0000
class AbstractAnalysis { class AbstractAnalysis {
@@ -25,7 +28,7 @@ public:
virtual ~AbstractAnalysis(){;} virtual ~AbstractAnalysis(){;}
// generic function to set up the camera // generic function to set up the camera
virtual void setup(int camWidth, int camHeight); virtual void setup(int camWidth, int camHeight){_cam_w = camWidth; _cam_h = camHeight;}
// this is the main threaded loop for a given analysis // this is the main threaded loop for a given analysis
void do_synthesize(); void do_synthesize();
@@ -37,8 +40,6 @@ protected:
virtual void create_dir_allocate_images(); virtual void create_dir_allocate_images();
virtual void read_dir_create_list(string folder_path);
virtual void saveImageAnalysis(string filename); virtual void saveImageAnalysis(string filename);
virtual void saveImageSynthesis(string filename, ofxCvImage* newPixels, ofImageType newType); virtual void saveImageSynthesis(string filename, ofxCvImage* newPixels, ofImageType newType);
@@ -51,13 +52,15 @@ protected:
// display the results from disk // display the results from disk
virtual void displayresults() = 0; virtual void displayresults() = 0;
// display the results from disk // allocate all images
virtual void allocate() {;}
// deallocate all images
virtual void cleanup() {;} virtual void cleanup() {;}
public: public:
string _name; string _name;
string _draw_directory;
// event // event
ofEvent<string> _synthesize_cb; ofEvent<string> _synthesize_cb;
-2
View File
@@ -15,8 +15,6 @@ using Poco::Thread;
void CamNoiseAnalysis::setup(int camWidth, int camHeight) void CamNoiseAnalysis::setup(int camWidth, int camHeight)
{ {
AbstractAnalysis::setup(camWidth, camHeight);
NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_camnoise", NUMBER_RUNS); NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_camnoise", NUMBER_RUNS);
cout << "NUM_RUN CamNoiseAnalysis " << NUM_RUN << endl; cout << "NUM_RUN CamNoiseAnalysis " << NUM_RUN << endl;
//NUM_RUN = 5; //NUM_RUN = 5;
-2
View File
@@ -14,8 +14,6 @@ using Poco::Thread;
void ColorMultiAnalysis::setup(int camWidth, int camHeight) void ColorMultiAnalysis::setup(int camWidth, int camHeight)
{ {
AbstractAnalysis::setup(camWidth, camHeight);
NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_colormulti", NUMBER_RUNS); NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_colormulti", NUMBER_RUNS);
cout << "NUM_RUN ColorMultiAnalysis " << NUM_RUN << endl; cout << "NUM_RUN ColorMultiAnalysis " << NUM_RUN << endl;
//NUM_RUN = 5; //NUM_RUN = 5;
-2
View File
@@ -15,8 +15,6 @@ using Poco::Thread;
void ColorSingleAnalysis::setup(int camWidth, int camHeight) void ColorSingleAnalysis::setup(int camWidth, int camHeight)
{ {
AbstractAnalysis::setup(camWidth, camHeight);
NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_colorsingle", NUMBER_RUNS); NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_colorsingle", NUMBER_RUNS);
cout << "NUM_RUN ColorSingleAnalysis " << NUM_RUN << endl; cout << "NUM_RUN ColorSingleAnalysis " << NUM_RUN << endl;
//NUM_RUN = 5; //NUM_RUN = 5;
-3
View File
@@ -65,8 +65,5 @@ protected:
//this is the temporary container to allow us to convert and save out greyscale images //this is the temporary container to allow us to convert and save out greyscale images
ofxCvColorImage cvConvertorImage; ofxCvColorImage cvConvertorImage;
unsigned char * imagePixels;
int vectorCount;
ofVec2f * vectorField;
}; };
-2
View File
@@ -15,8 +15,6 @@ using Poco::Thread;
void DiffNoiseAnalysis::setup(int camWidth, int camHeight) void DiffNoiseAnalysis::setup(int camWidth, int camHeight)
{ {
AbstractAnalysis::setup(camWidth, camHeight);
NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_diffnoise", NUMBER_RUNS); NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_diffnoise", NUMBER_RUNS);
cout << "NUM_RUN DiffNoiseAnalysis " << NUM_RUN << endl; cout << "NUM_RUN DiffNoiseAnalysis " << NUM_RUN << endl;
//NUM_RUN = 5; //NUM_RUN = 5;
-2
View File
@@ -15,8 +15,6 @@ using Poco::Thread;
void IResponseAnalysis::setup(int camWidth, int camHeight) void IResponseAnalysis::setup(int camWidth, int camHeight)
{ {
AbstractAnalysis::setup(camWidth, camHeight);
NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_iresponse", NUMBER_RUNS); NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_iresponse", NUMBER_RUNS);
cout << "NUM_RUN IResponseAnalysis " << NUM_RUN << endl; cout << "NUM_RUN IResponseAnalysis " << NUM_RUN << endl;
//NUM_RUN = 5; //NUM_RUN = 5;
-2
View File
@@ -17,8 +17,6 @@ using Poco::Thread;
void RelaxRateAnalysis::setup(int camWidth, int camHeight) void RelaxRateAnalysis::setup(int camWidth, int camHeight)
{ {
AbstractAnalysis::setup(camWidth, camHeight);
NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_relaxrate", NUMBER_RUNS); NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_relaxrate", NUMBER_RUNS);
cout << "NUM_RUN RelaxRateAnalysis " << NUM_RUN << endl; cout << "NUM_RUN RelaxRateAnalysis " << NUM_RUN << endl;
//NUM_RUN = 5; //NUM_RUN = 5;
+96 -4
View File
@@ -19,8 +19,6 @@ using Poco::Thread;
void ShadowScapesAnalysis::setup(int camWidth, int camHeight) void ShadowScapesAnalysis::setup(int camWidth, int camHeight)
{ {
AbstractAnalysis::setup(camWidth, camHeight);
NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_shadowscapes", NUMBER_RUNS); NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_shadowscapes", NUMBER_RUNS);
cout << "NUM_RUN ShadowScapesAnalysis " << NUM_RUN << endl; cout << "NUM_RUN ShadowScapesAnalysis " << NUM_RUN << endl;
//NUM_RUN = 5; //NUM_RUN = 5;
@@ -53,6 +51,7 @@ void ShadowScapesAnalysis::setup(int camWidth, int camHeight)
_show_image = false; _show_image = false;
_image_shown = false; _image_shown = false;
/*
image1.clear(); image1.clear();
image2.clear(); image2.clear();
image3.clear(); image3.clear();
@@ -99,6 +98,7 @@ void ShadowScapesAnalysis::setup(int camWidth, int camHeight)
cvGrayDiff2.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h); cvGrayDiff2.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h);
cvConvertorImage.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h); cvConvertorImage.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h);
*/
} }
@@ -226,24 +226,116 @@ void ShadowScapesAnalysis::displayresults()
if(!image3.loadImage(_saved_filenames_synthesis[i])){ if(!image3.loadImage(_saved_filenames_synthesis[i])){
//couldn't load image //couldn't load image
cout << "didn't load image" << endl; cout << "didn't load image" << endl;
} } else {
_show_image = true;
_image_shown = false;
}
/*
if(image3.loadImage(_saved_filenames_synthesis[i])){ if(image3.loadImage(_saved_filenames_synthesis[i])){
image3.loadImage(_saved_filenames_synthesis[i]); //image3.loadImage(_saved_filenames_synthesis[i]);
//cout << "_show_image = true;" << endl; //cout << "_show_image = true;" << endl;
_show_image = true; _show_image = true;
_image_shown = false; _image_shown = false;
} }
*/
} }
} }
void ShadowScapesAnalysis::allocate()
{
_RUN_DONE = false;
image1.clear();
image3.clear();
image4.clear();
image5.clear();
image1.setUseTexture(false);
image3.setUseTexture(false);
image4.setUseTexture(false);
image5.setUseTexture(false);
image1.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h, OF_IMAGE_COLOR);
image3.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h, OF_IMAGE_COLOR);
image4.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h, OF_IMAGE_COLOR);
image5.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h, OF_IMAGE_COLOR);
while(!_RUN_DONE && _state != STATE_STOP)
Thread::sleep(3);
}
void ShadowScapesAnalysis::cleanup()
{
_RUN_DONE = false;
image1.clear();
image3.clear();
image4.clear();
image5.clear();
while(!_RUN_DONE && _state != STATE_STOP)
Thread::sleep(3);
}
// the animation draw - and the output draw // the animation draw - and the output draw
void ShadowScapesAnalysis::draw() void ShadowScapesAnalysis::draw()
{ {
switch (_state) { switch (_state) {
case STATE_ALLOCATE:
{
image2.clear();
image2.setUseTexture(true);
image2.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h, OF_IMAGE_COLOR);
cvColorImage1.clear();
cvGrayImage1.clear();
cvGrayDiff1.clear();
cvColorImage2.clear();
cvGrayImage2.clear();
cvGrayDiff2.clear();
cvConvertorImage.clear();
cvColorImage1.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h);
cvGrayImage1.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h);
cvGrayDiff1.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h);
cvColorImage2.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h);
cvGrayImage2.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h);
cvGrayDiff2.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h);
cvConvertorImage.allocate(RefractiveIndex::_vid_w,RefractiveIndex::_vid_h);
_state = STATE_DEF;
_RUN_DONE = true;
break;
}
case STATE_CLEANUP:
{
image2.clear();
cvColorImage1.clear();
cvGrayImage1.clear();
cvGrayDiff1.clear();
cvColorImage2.clear();
cvGrayImage2.clear();
cvGrayDiff2.clear();
_state = STATE_DEF;
_RUN_DONE = true;
break;
}
case STATE_ACQUIRING: case STATE_ACQUIRING:
{ {
_line += _step; _line += _step;
+3
View File
@@ -26,6 +26,9 @@ public:
void synthesise(); void synthesise();
void displayresults(); void displayresults();
void allocate();
void cleanup();
void draw(); void draw();
void save_cb(Poco::Timer& timer); void save_cb(Poco::Timer& timer);
-2
View File
@@ -15,8 +15,6 @@ using Poco::Thread;
void ShapeFromShadingAnalysis::setup(int camWidth, int camHeight) void ShapeFromShadingAnalysis::setup(int camWidth, int camHeight)
{ {
AbstractAnalysis::setup(camWidth, camHeight);
NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_shapefromshading", NUMBER_RUNS); NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_shapefromshading", NUMBER_RUNS);
cout << "NUM_RUN ShapeFromShadingAnalysis " << NUM_RUN << endl; cout << "NUM_RUN ShapeFromShadingAnalysis " << NUM_RUN << endl;
//NUM_RUN = 5; //NUM_RUN = 5;
-2
View File
@@ -15,8 +15,6 @@ using Poco::Thread;
void StrobeAnalysis::setup(int camWidth, int camHeight) void StrobeAnalysis::setup(int camWidth, int camHeight)
{ {
AbstractAnalysis::setup(camWidth, camHeight);
NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_strobe", NUMBER_RUNS); NUM_RUN = RefractiveIndex::XML.getValue("config:analysis_NUM_RUN:NUM_RUN_strobe", NUMBER_RUNS);
cout << "NUM_RUN StrobeAnalysis " << NUM_RUN << endl; cout << "NUM_RUN StrobeAnalysis " << NUM_RUN << endl;
//NUM_RUN = 5; //NUM_RUN = 5;