@@ -282,6 +282,17 @@ NAN_METHOD(FaceRecognizerWrap::PredictSync) {
282
282
double confidence = 0.0 ;
283
283
self->rec ->predict (im, predictedLabel, confidence);
284
284
285
+ #if CV_MAJOR_VERSION >= 3
286
+ // Older versions of OpenCV3 incorrectly returned label=0 at
287
+ // confidence=DBL_MAX instead of label=-1 on failure. This can be removed
288
+ // once the fix* becomes more widespread.
289
+ //
290
+ // * https://github.com/Itseez/opencv_contrib/commit/0aa58ae9b30a017b356a86d29453c0b56ed9e625#diff-d9c561bf45c255c5951ff1ab55e80473
291
+ if (predictedLabel == 0 && confidence == DBL_MAX) {
292
+ predictedLabel = -1 ;
293
+ }
294
+ #endif
295
+
285
296
v8::Local<v8::Object> res = Nan::New<Object>();
286
297
res->Set (Nan::New (" id" ).ToLocalChecked (), Nan::New<Number>(predictedLabel));
287
298
res->Set (Nan::New (" confidence" ).ToLocalChecked (), Nan::New<Number>(confidence));
@@ -304,6 +315,16 @@ class PredictASyncWorker: public Nan::AsyncWorker {
304
315
305
316
void Execute () {
306
317
this ->rec ->predict (this ->im , this ->predictedLabel , this ->confidence );
318
+ #if CV_MAJOR_VERSION >= 3
319
+ // Older versions of OpenCV3 incorrectly returned label=0 at
320
+ // confidence=DBL_MAX instead of label=-1 on failure. This can be removed
321
+ // once the fix* becomes more widespread.
322
+ //
323
+ // * https://github.com/Itseez/opencv_contrib/commit/0aa58ae9b30a017b356a86d29453c0b56ed9e625#diff-d9c561bf45c255c5951ff1ab55e80473
324
+ if (this ->predictedLabel == 0 && this ->confidence == DBL_MAX) {
325
+ this ->predictedLabel = -1 ;
326
+ }
327
+ #endif
307
328
}
308
329
309
330
void HandleOKCallback () {
0 commit comments