-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathAdaBoostClassifier.cpp
More file actions
70 lines (59 loc) · 1.56 KB
/
AdaBoostClassifier.cpp
File metadata and controls
70 lines (59 loc) · 1.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <fstream>
#include <vector>
#include <algorithm>
#include <math.h>
#include <float.h>
using namespace std;
#include "AdaBoostClassifier.h"
//#include "CascadeClassifier.h"
AdaBoostClassifier::AdaBoostClassifier():count(0),thresh(0.0),alphas(NULL),scs(NULL)
{
}
AdaBoostClassifier::~AdaBoostClassifier()
{
Clear();
}
void AdaBoostClassifier::Clear()
{
delete[] scs; scs=NULL;
delete[] alphas; alphas=NULL;
count = 0;
thresh = 0.0;
}
AdaBoostClassifier& AdaBoostClassifier::operator=(const AdaBoostClassifier& source)
{
InitToGivenSize(source.count);
count = source.count;
thresh = source.thresh;
memcpy(alphas,source.alphas,sizeof(*alphas)*count);
for(int i=0;i<count;i++) scs[i] = source.scs[i];
return *this;
}
void AdaBoostClassifier::InitToGivenSize(const int size)
{
Clear();
count = 0;
thresh = 0.0;
alphas = new REAL[size]; ASSERT(alphas!=NULL);
scs = new SimpleClassifier[size]; ASSERT(scs!=NULL);
}
void AdaBoostClassifier::WriteToFile(ofstream& f) const
{
f<<count<<endl;
f<<thresh<<endl;
for(int i=0;i<count;i++) f<<alphas[i]<<" ";
f<<endl;
for(int i=0;i<count;i++) scs[i].WriteToFile(f);
f<<endl;
}
void AdaBoostClassifier::ReadFromFile(ifstream& f)
{
Clear();
f>>count; ASSERT(count>0);
f.ignore(256,'\n');
scs = new SimpleClassifier[count]; ASSERT(scs!=NULL);
alphas = new REAL[count]; ASSERT(alphas!=NULL);
f>>thresh; f.ignore(256,'\n');
for(int i=0;i<count;i++) f>>alphas[i]; f.ignore(256,'\n');
for(int i=0;i<count;i++) scs[i].ReadFromFile(f); f.ignore(256,'\n');
}