summaryrefslogtreecommitdiff
path: root/offsetProject/src/imageStore.h
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2014-03-13 17:32:30 +0000
committerTim Redfern <tim@eclectronics.org>2014-03-13 17:32:30 +0000
commit8072eb4d248debf2d049548dd5dec21cc0152c52 (patch)
tree0f257a0d4521c0945fb6b693531c3b19d960b895 /offsetProject/src/imageStore.h
parentc062e52ad21440b69ec7096e37b0fc3346465328 (diff)
matrix size adjustment
Diffstat (limited to 'offsetProject/src/imageStore.h')
-rw-r--r--offsetProject/src/imageStore.h34
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();