forked from adamhrv/HaarcascadeVisualizer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cascadeLoader.pde
95 lines (67 loc) · 2.82 KB
/
cascadeLoader.pde
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// XML Loading Routine
ArrayList doLoadXML(String file){
ArrayList returnList = new ArrayList();
XMLElement xml = new XMLElement(this,file);
xml = xml.getChild(0);
String sampleSizeStr = (xml.getChild(0).getContent().trim());//size
sampleSize = int(split(sampleSizeStr," "));
XMLElement returnListNode = xml.getChild(1);//returnList
int numReturnList = returnListNode.getChildCount();
for(int i=0;i<numReturnList;i++){//20 returnList in this file
XMLElement treesNode = returnListNode.getChild(i).getChild(0);
int numTrees = treesNode.getChildCount();
ArrayList trees = new ArrayList();// holder of nodes
for(int j=0;j<numTrees;j++){
int numNodes = treesNode.getChild(j).getChildCount();
ArrayList nodes = new ArrayList();
for(int n=0;n<numNodes;n++){
XMLElement node = treesNode.getChild(j).getChild(n);
XMLElement feature = node.getChild(0);
XMLElement rectsNode = feature.getChild(0);
int numRects = rectsNode.getChildCount();
HaarRect[] haarRects = new HaarRect[numRects];
int[] weights = new int[numRects];
for(int k=0;k<numRects;k++){
XMLElement kid = rectsNode.getChild(k);
String[] rStr = split(kid.getContent().trim()," ");
int[] coords = new int[5];
for(int l = 0;l<coords.length;l++){
coords[l] = int(rStr[l]);
}
HaarRect hr = new HaarRect(coords);
haarRects[k] = hr;
}
boolean tilted = boolean(feature.getChild(1).getContent());
float leftVal = 0;
float rightVal = 0;
int rightNode = 0;
int leftNode = 0;
float threshold = float(node.getChild(2).getContent().trim());
for(int l=3;l<node.getChildCount();l++){
String nName = node.getChild(l).getName();
XMLElement kid = node.getChild(l);
if(node.getName().equals("left_val")){
leftVal = float(kid.getContent().trim());
}
else if (nName.equals("left_node")){
leftNode = int(kid.getContent().trim());
}
else if(nName.equals("right_val")){
rightVal = float(kid.getContent().trim());
}
else if(nName.equals("right_node")){
rightNode = int(kid.getContent().trim());
}
}//end for rest of inside the node
nodes.add(new Node(haarRects,tilted,threshold,leftVal,rightVal,leftNode,rightNode));
}// end nodes loop
trees.add(new Tree(nodes));
}//end trees loop
returnList.add(new Stage(trees));
}//end returnList loop
println("");
println("[cascadeLoader] Total stages: "+returnList.size());
println("[cascadeLoader] Sample size: "+sampleSize[0] + ", "+sampleSize[1]);
println("[cascadeLoader] Rows: "+rows+", Columns: "+cols);
return returnList;
}