Ignore:
Timestamp:
07/24/2009 03:33:27 PM (10 years ago)
Author:
dave
Message:

eigenface user classification seems to work on the test video

File:
1 edited

Legend:

Unmodified
Added
Removed
  • foam/trunk/faceclassifier/src/App.cpp

    r94 r95  
    1919#include "PCAClassifier.h" 
    2020 
     21//#define SAVE_FRAMES 
     22 
    2123using namespace std; 
    2224 
     25int w=20; 
     26int h=30; 
     27 
    2328App::App(const string &filename) : 
     29m_Capture(NULL), 
     30m_Cascade(NULL), 
     31m_Storage(NULL), 
     32m_Classifier(NULL), 
     33m_FaceBank(NULL), 
     34m_FaceNum(1), 
     35m_Learn(true), 
    2436frame(NULL), 
    25 frame_copy(NULL) 
     37frame_copy(NULL), 
     38m_FrameNum(0) 
    2639{ 
    2740        m_CtrlPort.open("/faceident-ctrl");  
     
    4154        assert(m_Capture); 
    4255         
    43         int w=50; 
    44         int h=80; 
    45          
    4656        PCA pca(w*h); 
    47         FILE *f=fopen("../data/eigenspaces/spacek-50x80.pca", "rb"); 
     57        //FILE *f=fopen("../data/eigenspaces/spacek-50x80.pca", "rb"); 
     58        FILE *f=fopen("../data/eigenspaces/spacek-20x30.pca", "rb"); 
    4859        pca.Load(f); 
    4960        fclose(f); 
    50         pca.Compress(0,100); 
     61        pca.Compress(3,30); 
    5162         
    5263        m_Classifier = new PCAClassifier(pca); 
     
    136147                // get the face area as a sub image 
    137148                Image face = camera.SubImage(r->x, r->y, r->width, r->height); 
     149                 
     150                //face.SubMean(); 
     151                //camera.Blit(face.Scale(w,h).RGB2GRAY(),100,100); 
     152                 
    138153                // pass it into the face bank  
    139154                if (m_Learn) 
     
    163178        } 
    164179 
     180        char info[256]; 
     181        if (m_Learn) 
     182        { 
     183                snprintf(info,256,"Learning user :%d",m_FaceNum); 
     184                 
     185                PCAClassifier *c = static_cast<PCAClassifier*>(m_FaceBank->GetClassifier()); 
     186                if (c->GroupExists(m_FaceNum)) 
     187                { 
     188                        Vector<float> p = c->GetGroupMean(m_FaceNum); 
     189                        cerr<<p.Magnitude()<<endl; 
     190                        Vector<float> r = c->GetPCA().Synth(p); 
     191                        camera.Blit(Image(w,h,1,r),0,100); 
     192                } 
     193        } 
     194        else 
     195        { 
     196                snprintf(info,256,"Detecting users"); 
     197        } 
     198         
     199        cvPutText(camera.m_Image, info, cvPoint(10,10), &m_Font, colors[0]); 
     200 
    165201        m_SceneState.Update(); 
    166      
     202         
     203    m_FrameNum++; 
     204#ifdef SAVE_FRAMES 
     205        char name[256]; 
     206        sprintf(name,"out-%0.4d.jpg",m_FrameNum); 
     207        cerr<<"saving "<<name<<endl; 
     208        cvSaveImage(name,camera.m_Image); 
     209#endif 
     210 
    167211        cvShowImage("face classifier", camera.m_Image); 
    168212 
Note: See TracChangeset for help on using the changeset viewer.