Skip to content

Commit 505eaf0

Browse files
authored
contrib/face: extra setters and getters for LBPHFaceRecognizer (#1194)
contrib/face: extra setters and getters for LBPHFaceRecognizer
1 parent 41b95a2 commit 505eaf0

File tree

4 files changed

+110
-1
lines changed

4 files changed

+110
-1
lines changed

contrib/face.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ struct PredictResponse LBPHFaceRecognizer_PredictExtended(LBPHFaceRecognizer fr,
6060
return response;
6161
}
6262

63+
double LBPHFaceRecognizer_GetThreshold(LBPHFaceRecognizer fr){
64+
return (*fr)->getThreshold();
65+
}
66+
6367
void LBPHFaceRecognizer_SetThreshold(LBPHFaceRecognizer fr, double threshold) {
6468
(*fr)->setThreshold(threshold);
6569

@@ -99,4 +103,26 @@ void LBPHFaceRecognizer_LoadFile(LBPHFaceRecognizer fr, const char* filename) {
99103
return;
100104
}
101105

106+
void LBPHFaceRecognizer_SetGridX(LBPHFaceRecognizer fr, int x) {
107+
(*fr)->setGridX(x);
108+
109+
return;
110+
}
111+
112+
void LBPHFaceRecognizer_SetGridY(LBPHFaceRecognizer fr, int y) {
113+
(*fr)->setGridY(y);
114+
115+
return;
116+
}
117+
118+
int LBPHFaceRecognizer_GetGridX(LBPHFaceRecognizer fr) {
119+
int n = (*fr)->getGridX();
120+
121+
return n;
122+
}
123+
124+
int LBPHFaceRecognizer_GetGridY(LBPHFaceRecognizer fr) {
125+
int n = (*fr)->getGridY();
126+
return n;
127+
}
102128

contrib/face.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package contrib
66
*/
77
import "C"
88
import (
9+
"image"
910
"unsafe"
1011

1112
"gocv.io/x/gocv"
@@ -107,6 +108,16 @@ func (fr *LBPHFaceRecognizer) PredictExtendedResponse(sample gocv.Mat) PredictRe
107108
return resp
108109
}
109110

111+
// GetThreshold gets the threshold value of the model, i.e. the threshold
112+
// applied in the prediction.
113+
//
114+
// For further information, see:
115+
// https://docs.opencv.org/4.x/df/d25/classcv_1_1face_1_1LBPHFaceRecognizer.html#acf2a6993eb4347b3f89009da693a3f70
116+
func (fr *LBPHFaceRecognizer) GetThreshold() float32 {
117+
t := C.LBPHFaceRecognizer_GetThreshold(fr.p)
118+
return float32(t)
119+
}
120+
110121
// SetThreshold sets the threshold value of the model, i.e. the threshold
111122
// applied in the prediction.
112123
//
@@ -164,3 +175,48 @@ func (fr *LBPHFaceRecognizer) LoadFile(fname string) {
164175
defer C.free(unsafe.Pointer(cName))
165176
C.LBPHFaceRecognizer_LoadFile(fr.p, cName)
166177
}
178+
179+
// SetGridX sets grid's X value
180+
//
181+
// For further information, see:
182+
// https://docs.opencv.org/4.x/df/d25/classcv_1_1face_1_1LBPHFaceRecognizer.html#ad65975baee31dbf3bd2a750feef74831
183+
func (fr *LBPHFaceRecognizer) SetGridX(x int) {
184+
C.LBPHFaceRecognizer_SetGridX(fr.p, C.int(x))
185+
}
186+
187+
// SetGridY sets grid's Y value
188+
//
189+
// For further information, see:
190+
// https://docs.opencv.org/4.x/df/d25/classcv_1_1face_1_1LBPHFaceRecognizer.html#a9cebb0138dbb3553b27beb2df3924ae6
191+
func (fr *LBPHFaceRecognizer) SetGridY(y int) {
192+
C.LBPHFaceRecognizer_SetGridY(fr.p, C.int(y))
193+
}
194+
195+
// GetGridX gets grid's X value
196+
//
197+
// For further information, see:
198+
// https://docs.opencv.org/4.x/df/d25/classcv_1_1face_1_1LBPHFaceRecognizer.html#ada6839bed931a8f68c5127e1af7a8b83
199+
func (fr *LBPHFaceRecognizer) GetGridX() int {
200+
x := C.LBPHFaceRecognizer_GetGridX(fr.p)
201+
return int(x)
202+
}
203+
204+
// GetGridY gets grid's Y value
205+
//
206+
// For further information, see:
207+
// https://docs.opencv.org/4.x/df/d25/classcv_1_1face_1_1LBPHFaceRecognizer.html#a22c68c0baf3eb9e852f47ae9241dbf15
208+
func (fr *LBPHFaceRecognizer) GetGridY() int {
209+
y := C.LBPHFaceRecognizer_GetGridY(fr.p)
210+
return int(y)
211+
}
212+
213+
// SetGrid helper for SetGrid* functions
214+
func (fr *LBPHFaceRecognizer) SetGrid(p image.Point) {
215+
fr.SetGridX(p.X)
216+
fr.SetGridY(p.Y)
217+
}
218+
219+
// GetGrid helper for GetGrid* functions
220+
func (fr *LBPHFaceRecognizer) GetGrid() image.Point {
221+
return image.Point{X: fr.GetGridX(), Y: fr.GetGridY()}
222+
}

contrib/face.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,19 @@ void LBPHFaceRecognizer_Train(LBPHFaceRecognizer fr, Mats images, IntVector labe
2626
void LBPHFaceRecognizer_Update(LBPHFaceRecognizer fr, Mats images, IntVector labels);
2727
int LBPHFaceRecognizer_Predict(LBPHFaceRecognizer fr, Mat sample);
2828
struct PredictResponse LBPHFaceRecognizer_PredictExtended(LBPHFaceRecognizer fr, Mat sample);
29+
double LBPHFaceRecognizer_GetThreshold(LBPHFaceRecognizer fr);
2930
void LBPHFaceRecognizer_SetThreshold(LBPHFaceRecognizer fr, double threshold);
3031
void LBPHFaceRecognizer_SetRadius(LBPHFaceRecognizer fr, int radius);
3132
void LBPHFaceRecognizer_SetNeighbors(LBPHFaceRecognizer fr, int neighbors);
3233
void LBPHFaceRecognizer_SaveFile(LBPHFaceRecognizer fr, const char* filename);
3334
void LBPHFaceRecognizer_LoadFile(LBPHFaceRecognizer fr, const char* filename);
3435
int LBPHFaceRecognizer_GetNeighbors(LBPHFaceRecognizer fr);
36+
void LBPHFaceRecognizer_SetGridX(LBPHFaceRecognizer fr, int x);
37+
void LBPHFaceRecognizer_SetGridY(LBPHFaceRecognizer fr, int y);
38+
int LBPHFaceRecognizer_GetGridX(LBPHFaceRecognizer fr);
39+
int LBPHFaceRecognizer_GetGridY(LBPHFaceRecognizer fr);
40+
41+
3542

3643
#ifdef __cplusplus
3744
}

contrib/face_test.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package contrib
22

33
import (
4-
"gocv.io/x/gocv"
4+
"image"
55
"math"
66
"testing"
7+
8+
"gocv.io/x/gocv"
79
)
810

911
func TestLBPHFaceRecognizer_Methods(t *testing.T) {
@@ -90,3 +92,21 @@ func TestLBPHFaceRecognizer_Methods(t *testing.T) {
9092
t.Errorf("Invalid loaded data: %d", label)
9193
}
9294
}
95+
96+
func TestLBPHFaceRecognizer_SetGridY_GetGridY(t *testing.T) {
97+
facer := NewLBPHFaceRecognizer()
98+
facer.SetGridY(5)
99+
100+
if v := facer.GetGridY(); v != 5 {
101+
t.Errorf("got %d want 5", v)
102+
}
103+
}
104+
105+
func TestLBPHFaceRecognizer_SetGrid_GetGrid(t *testing.T) {
106+
facer := NewLBPHFaceRecognizer()
107+
facer.SetGrid(image.Point{7, 5})
108+
109+
if p := facer.GetGrid(); p.X != 7 || p.Y != 5 {
110+
t.Errorf("got %+v want {7, 5}", p)
111+
}
112+
}

0 commit comments

Comments
 (0)