Skip to content

Commit 85b4542

Browse files
author
Michael Vines
committed
Work around bug in OpenCV3 FaceRecognizer::predict
Older versions of OpenCV3 incorrectly returned label=0 at confidence=DBL_MAX instead of label=-1 on failure. This can be removed once the fix* becomes more widespread. * opencv/opencv_contrib@0aa58ae#diff-d9c561bf45c255c5951ff1ab55e80473
1 parent 2405bc5 commit 85b4542

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/FaceRecognizer.cc

+21
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,17 @@ NAN_METHOD(FaceRecognizerWrap::PredictSync) {
282282
double confidence = 0.0;
283283
self->rec->predict(im, predictedLabel, confidence);
284284

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+
285296
v8::Local<v8::Object> res = Nan::New<Object>();
286297
res->Set(Nan::New("id").ToLocalChecked(), Nan::New<Number>(predictedLabel));
287298
res->Set(Nan::New("confidence").ToLocalChecked(), Nan::New<Number>(confidence));
@@ -304,6 +315,16 @@ class PredictASyncWorker: public Nan::AsyncWorker {
304315

305316
void Execute() {
306317
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
307328
}
308329

309330
void HandleOKCallback() {

0 commit comments

Comments
 (0)