diff options
| author | Tim Redfern <tim@eclectronics.org> | 2014-03-13 17:32:30 +0000 |
|---|---|---|
| committer | Tim Redfern <tim@eclectronics.org> | 2014-03-13 17:32:30 +0000 |
| commit | 8072eb4d248debf2d049548dd5dec21cc0152c52 (patch) | |
| tree | 0f257a0d4521c0945fb6b693531c3b19d960b895 /offsetProject/src/imageStore.h | |
| parent | c062e52ad21440b69ec7096e37b0fc3346465328 (diff) | |
matrix size adjustment
Diffstat (limited to 'offsetProject/src/imageStore.h')
| -rw-r--r-- | offsetProject/src/imageStore.h | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/offsetProject/src/imageStore.h b/offsetProject/src/imageStore.h index 8d1b584..a2bd39d 100644 --- a/offsetProject/src/imageStore.h +++ b/offsetProject/src/imageStore.h @@ -5,6 +5,8 @@ #define MIN_TILE_SIZE 8 #define MAX_TILE_SIZE 16 +#define FLANN_MATRIX_SIZE 3 + #include "ofMain.h" #include "ofxJSONElement.h" #include "ofxOpenCv.h" @@ -51,7 +53,7 @@ class imageStore : public ofThread{ img.setUseTexture(true); img.update(); images["000000"]=img; - colours["000000"]=ofColor(0,0,0); + //colours["000000"]=ofColor(0,0,0); } ~imageStore(){ @@ -113,6 +115,22 @@ class imageStore : public ofThread{ Matrix<float> query(test,1,3); Matrix<int> indices(new int[1], query.rows, 1); Matrix<float> dists(new float[1], query.rows, 1); + index->knnSearch(query, indices, dists, 1,SearchParams(10)); + im=*imageptrs[*indices[0]]; + //int i=rand()%imageptrs.size(); + //im=images[imageptrs[i]]; + //cerr<<"returning image "<<i<<endl; + unlock(); + } + return im; + } + + ofImage& get_image(float* data){ + ofImage& im=images.begin()->second; + if( lock() ){ + Matrix<float> query(data,1,FLANN_MATRIX_SIZE*FLANN_MATRIX_SIZE*3); + Matrix<int> indices(new int[1], query.rows, 1); + Matrix<float> dists(new float[1], query.rows, 1); index->knnSearch(query, indices, dists, 1,SearchParams(4)); im=*imageptrs[*indices[0]]; //int i=rand()%imageptrs.size(); @@ -131,10 +149,14 @@ class imageStore : public ofThread{ void add_data(const ofImage& _img){ ofImage img=_img; - img.resize(1,1); - data.push_back(img.getPixels()[0]); - data.push_back(img.getPixels()[1]); - data.push_back(img.getPixels()[2]); + img.resize(FLANN_MATRIX_SIZE,FLANN_MATRIX_SIZE); + for (int i=0;i<FLANN_MATRIX_SIZE;i++){ + for (int j=0;j<FLANN_MATRIX_SIZE;j++){ + data.push_back(img.getPixels()[(j*FLANN_MATRIX_SIZE+i)*3]); + data.push_back(img.getPixels()[(j*FLANN_MATRIX_SIZE+i)*3+1]); + data.push_back(img.getPixels()[(j*FLANN_MATRIX_SIZE+i)*3+2]); + } + } } //-------------------------- @@ -168,7 +190,7 @@ class imageStore : public ofThread{ } //build the flann index - Matrix<float> dataset(&data[0],data.size()/3,3); + Matrix<float> dataset(&data[0],data.size()/(3*FLANN_MATRIX_SIZE*FLANN_MATRIX_SIZE),3*FLANN_MATRIX_SIZE*FLANN_MATRIX_SIZE); index= new Index<L2<float> >(dataset, KDTreeIndexParams(4)); index->buildIndex(); |
