source: foam/trunk/simple-faceident/src/FaceBank.h @ 1

Revision 1, 2.1 KB checked in by nik, 11 years ago (diff)

reseeding

Line 
1// Copyright (C) 2009 foam
2//
3// This program is free software; you can redistribute it and/or modify
4// it under the terms of the GNU General Public License as published by
5// the Free Software Foundation; either version 2 of the License, or
6// (at your option) any later version.
7//
8// This program is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11// GNU General Public License for more details.
12//
13// You should have received a copy of the GNU General Public License
14// along with this program; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16
17#include <iostream>
18#include <list>
19#include <assert.h>
20
21#include "cv.h"
22
23#ifndef FACE_BANK
24#define FACE_BANK
25
26/////////////////////////////////////////////////////////////////////////////////
27// A face representation for the facebank
28
29class Face
30{
31public:
32        Face(IplImage *image);
33        ~Face();
34
35        // Blends a newly detected face into this image,
36        // an attempt at making it a little more dynamic
37        // needs more testing.
38        void Learn(const IplImage *image, float blend);
39
40        IplImage *m_Image;
41};
42
43/////////////////////////////////////////////////////////////////////////////////
44// A database of detected faces
45
46class FaceBank
47{
48public:
49        // MaxFaces is the number of faces we want to restrict the facebank to storing,
50        // FaceWidth and FaceHeight are the size for the internal stored image of the face for
51        // comparison, ErrorThresh is the error amount which will trigger a new face to be stored
52        FaceBank(unsigned int MaxFaces, unsigned int FaceWidth, unsigned int FaceHeight, float ErrorThresh);
53       
54        ~FaceBank();
55       
56        // gives the id, given a new face, and returns the confidence
57        // if it's a new face it returns 1 and stores the id, copying the face image
58        float Identify(IplImage *face, unsigned int &ID, bool learn);
59       
60        std::list<Face*> &GetFaceList() { return m_FaceList; }
61       
62private:       
63
64        unsigned int m_MaxFaces;
65        unsigned int m_FaceWidth;
66        unsigned int m_FaceHeight;
67        float m_ErrorThresh;
68       
69        std::list<Face*> m_FaceList;
70};
71
72#endif
Note: See TracBrowser for help on using the repository browser.