@@ -72,85 +72,23 @@ float FACE_RECOGNIZE_THRESH = 0.55;
72
72
73
73
extern " C"
74
74
JNIEXPORT jint JNICALL
75
- Java_com_google_android_gms_samples_vision_face_facetracker_FaceTrackerActivity_loadResources (
76
- JNIEnv *env, jobject instance)
77
- {
78
-
79
- LOGI (" load resource" );
80
- FILE *file1 = fopen (" /storage/emulated/0/Download/shape_predictor_5_face_landmarks.dat" , " r+" );
81
- FILE *file2 = fopen (" /storage/emulated/0/Download/dlib_face_recognition_resnet_model_v1.dat" ,
82
- " r+" );
83
- // FILE *file3 = fopen("/storage/emulated/0/Download/faces_linear.svm", "r+");
84
-
85
- if (file1 != NULL && file2 != NULL ) {
86
- fclose (file1);
87
- fclose (file2);
88
- // fclose(file3);
89
- dlib::deserialize (" /storage/emulated/0/Download/shape_predictor_5_face_landmarks.dat" )
90
- >> sp;
91
- dlib::deserialize (" /storage/emulated/0/Download/shape_predictor_5_face_landmarks.dat" )
92
- >> sp1;
93
- dlib::deserialize (" /storage/emulated/0/Download/dlib_face_recognition_resnet_model_v1.dat" )
94
- >> net;
95
- dlib::deserialize (" /storage/emulated/0/Download/dlib_face_recognition_resnet_model_v1.dat" )
96
- >> net1;
97
- // dlib::deserialize("/storage/emulated/0/Download/faces_linear.svm") >> df;
98
-
99
- DIR *d;
100
- char *p1,*p2;
101
- int ret;
102
- struct dirent *dir;
103
- d = opendir (" /storage/emulated/0/Download" );
104
- if (d)
105
- {
106
- LOGI (" Loading feature vectors using *.vec" , p1);
107
- while ((dir = readdir (d)) != NULL )
108
- {
109
- p1=strtok (dir->d_name ," ." );
110
- p2=strtok (NULL ," ." );
111
- if (p2!=NULL )
112
- {
113
- ret=strcmp (p2," vec" );
114
- if (ret==0 )
115
- {
116
- std::string name = std::string (p1);
117
- std::string file = name + " .vec" ;
118
- matrix<float , 0 , 1 > face_vector;
119
- dlib::deserialize (" /storage/emulated/0/Download/" + file) >> face_vector;
120
- known_faces.insert ({name, face_vector});
121
- }
122
- }
123
-
124
- }
125
- closedir (d);
126
- }
127
- } else {
128
- return 1 ; // failed
129
- }
130
-
131
- return 0 ;
132
- }extern " C"
133
- JNIEXPORT jint JNICALL
134
75
Java_dlib_android_FaceRecognizer_loadResourcesPart1 (JNIEnv *env, jobject instance) {
135
76
136
77
LOGI (" load resource part1" );
137
- FILE *file1 = fopen (" /storage/emulated/0/Download/shape_predictor_5_face_landmarks.dat" , " r+" );
138
- FILE *file2 = fopen (" /storage/emulated/0/Download/dlib_face_recognition_resnet_model_v1.dat" ,
139
- " r+" );
78
+ FILE *file1 = fopen (" /sdcard/Download/shape_predictor_5_face_landmarks.dat" , " r+" );
79
+ FILE *file2 = fopen (" /sdcard/Download/dlib_face_recognition_resnet_model_v1.dat" , " r+" );
140
80
141
81
if (file1 != NULL && file2 != NULL ) {
142
82
fclose (file1);
143
83
fclose (file2);
144
- dlib::deserialize (" /storage/emulated/0/Download/shape_predictor_5_face_landmarks.dat" )
145
- >> sp;
146
- dlib::deserialize (" /storage/emulated/0/Download/dlib_face_recognition_resnet_model_v1.dat" )
147
- >> net;
84
+ dlib::deserialize (" /sdcard/Download/shape_predictor_5_face_landmarks.dat" ) >> sp;
85
+ dlib::deserialize (" /sdcard/Download/dlib_face_recognition_resnet_model_v1.dat" ) >> net;
148
86
149
87
DIR *d;
150
88
char *p1,*p2;
151
89
int ret;
152
90
struct dirent *dir;
153
- d = opendir (" /storage/emulated/0 /Download" );
91
+ d = opendir (" /sdcard /Download" );
154
92
if (d)
155
93
{
156
94
LOGI (" Loading feature vectors using *.vec" , p1);
@@ -166,7 +104,7 @@ Java_dlib_android_FaceRecognizer_loadResourcesPart1(JNIEnv *env, jobject instanc
166
104
std::string name = std::string (p1);
167
105
std::string file = name + " .vec" ;
168
106
matrix<float , 0 , 1 > face_vector;
169
- dlib::deserialize (" /storage/emulated/0 /Download/" + file) >> face_vector;
107
+ dlib::deserialize (" /sdcard /Download/" + file) >> face_vector;
170
108
known_faces.insert ({name, face_vector});
171
109
}
172
110
}
@@ -175,6 +113,7 @@ Java_dlib_android_FaceRecognizer_loadResourcesPart1(JNIEnv *env, jobject instanc
175
113
closedir (d);
176
114
}
177
115
} else {
116
+ LOGI (" Failed to load resources part1" );
178
117
return -1 ; // failed
179
118
}
180
119
@@ -185,18 +124,16 @@ JNIEXPORT jint JNICALL
185
124
Java_dlib_android_FaceRecognizer_loadResourcesPart2 (JNIEnv *env, jobject instance) {
186
125
187
126
LOGI (" load resource part2" );
188
- FILE *file1 = fopen (" /storage/emulated/0/Download/shape_predictor_5_face_landmarks.dat" , " r+" );
189
- FILE *file2 = fopen (" /storage/emulated/0/Download/dlib_face_recognition_resnet_model_v1.dat" ,
190
- " r+" );
127
+ FILE *file1 = fopen (" /sdcard/Download/shape_predictor_5_face_landmarks.dat" , " r+" );
128
+ FILE *file2 = fopen (" /sdcard/Download/dlib_face_recognition_resnet_model_v1.dat" , " r+" );
191
129
192
130
if (file1 != NULL && file2 != NULL ) {
193
131
fclose (file1);
194
132
fclose (file2);
195
- dlib::deserialize (" /storage/emulated/0/Download/shape_predictor_5_face_landmarks.dat" )
196
- >> sp1;
197
- dlib::deserialize (" /storage/emulated/0/Download/dlib_face_recognition_resnet_model_v1.dat" )
198
- >> net1;
133
+ dlib::deserialize (" /sdcard/Download/shape_predictor_5_face_landmarks.dat" ) >> sp1;
134
+ dlib::deserialize (" /sdcard/Download/dlib_face_recognition_resnet_model_v1.dat" ) >> net1;
199
135
} else {
136
+ LOGI (" Failed to load resources part2" );
200
137
return -1 ;
201
138
}
202
139
return 0 ;
@@ -234,7 +171,7 @@ Java_dlib_android_FaceRecognizer_recognizeFaces(JNIEnv *env,
234
171
235
172
img.set_size (infocolor.height , infocolor.width );
236
173
237
- LOGI (" size w=%d h=%d" , infocolor.width , infocolor.height );
174
+ // LOGI("size w=%d h=%d", infocolor.width, infocolor.height);
238
175
for (y = 0 ; y < infocolor.height ; y++) { // todo: performance
239
176
argb *line = (argb *) pixelscolor;
240
177
for (x = 0 ; x < infocolor.width ; ++x) {
@@ -302,6 +239,7 @@ Java_dlib_android_FaceRecognizer_recognizeFace(JNIEnv *env, jobject instance, jo
302
239
LOGI (" color image :: width is %d; height is %d; stride is %d; format is %d;flags is %d" ,
303
240
infocolor.width , infocolor.height , infocolor.stride , infocolor.format , infocolor.flags );
304
241
242
+ LOGI (" known_faces size %d" , known_faces.size ());
305
243
if (infocolor.format != ANDROID_BITMAP_FORMAT_RGBA_8888) {
306
244
LOGE (" Bitmap format is not RGBA_8888 !" );
307
245
return env->NewStringUTF (" Image broken 2" );
@@ -328,7 +266,7 @@ Java_dlib_android_FaceRecognizer_recognizeFace(JNIEnv *env, jobject instance, jo
328
266
LOGI (" detected size %d" , dets.size ());
329
267
330
268
float min_dist = 0.0 ;
331
- if (dets.size () > 0 ){
269
+ if (dets.size () > 0 ){
332
270
auto face = dets.front ();
333
271
std::vector<matrix<rgb_pixel>> faces;
334
272
int x = face.left ();
@@ -337,16 +275,18 @@ Java_dlib_android_FaceRecognizer_recognizeFace(JNIEnv *env, jobject instance, jo
337
275
int height = face.height ();
338
276
339
277
auto shape = sp (img, face);
278
+ // LOGI("shape predictor");
340
279
matrix<rgb_pixel> face_chip;
341
280
extract_image_chip (img, get_face_chip_details (shape, 150 , 0.25 ), face_chip);
342
281
faces.push_back (move (face_chip));
343
282
283
+ // LOGI("before recognized size %d", -1);
344
284
std::vector<matrix<float , 0 , 1 >> face_descriptors = net (faces);
345
-
285
+ // LOGI("after recognized size %d", face_descriptors.size());
346
286
if (face_descriptors.size () > 0 )
347
287
{
348
288
matrix<float , 0 , 1 > face_desc = face_descriptors[0 ];
349
- for (auto & i : known_faces) {
289
+ for (auto i : known_faces) {
350
290
float dist = length (face_desc - i.second );
351
291
if (dist < min_dist){
352
292
min_dist = dist;
@@ -361,7 +301,7 @@ Java_dlib_android_FaceRecognizer_recognizeFace(JNIEnv *env, jobject instance, jo
361
301
LOGI (" not recognized, max dist %0.2f" , min_dist);
362
302
}
363
303
364
- // LOGI("unlocking pixels");
304
+ LOGI (" unlocking pixels" );
365
305
AndroidBitmap_unlockPixels (env, bmp);
366
306
367
307
std::string returnValue = " Unknown" ;
0 commit comments