From b8ce5d0def915c405b5b1e3db23d15ea6f2e3772 Mon Sep 17 00:00:00 2001 From: Peter Braden Date: Fri, 15 Mar 2013 13:55:01 -0700 Subject: [PATCH] Correct basic case with feedback from jraadt --- smoke/smoketest.js | 2 +- src/FaceRecognizer.cc | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/smoke/smoketest.js b/smoke/smoketest.js index 6982106..36b1077 100755 --- a/smoke/smoketest.js +++ b/smoke/smoketest.js @@ -11,7 +11,7 @@ for (var i = 1; i< 41; i++){ var facerec = new cv.FaceRecognizer(); facerec.train(trainingData); -console.log(facerec.predictSync('/Users/peterbraden/Downloads/orl_faces/s1/10.pgm')); +console.log(facerec.predictSync('/Users/peterbraden/Downloads/orl_faces/s6/10.pgm')); /* diff --git a/src/FaceRecognizer.cc b/src/FaceRecognizer.cc index bef6bf1..26e391b 100644 --- a/src/FaceRecognizer.cc +++ b/src/FaceRecognizer.cc @@ -49,8 +49,8 @@ FaceRecognizerWrap::New(const Arguments &args) { if (args.This()->InternalFieldCount() == 0) JSTHROW_TYPE("Cannot Instantiate without new") - // By default initialize eigenface - cv::Ptr f = cv::createEigenFaceRecognizer(); + // By default initialize LBPH + cv::Ptr f = cv::createLBPHFaceRecognizer(1, 8, 8, 8, 80.0); FaceRecognizerWrap *pt = new FaceRecognizerWrap(f); pt->Wrap(args.This()); @@ -90,6 +90,8 @@ FaceRecognizerWrap::Train(const Arguments& args){ int label = valarr->Get(0)->Uint32Value(); cv::Mat im = fromMatrixOrFilename(valarr->Get(1)); + im = im.clone(); + cv::cvtColor(im, im, CV_RGB2GRAY); labels.push_back(label); images.push_back(im); } @@ -103,16 +105,19 @@ FaceRecognizerWrap::Train(const Arguments& args){ Handle FaceRecognizerWrap::PredictSync(const Arguments& args){ SETUP_FUNCTION(FaceRecognizerWrap) - + cv::Mat im = fromMatrixOrFilename(args[0]);//TODO CHECK! cv::cvtColor(im, im, CV_RGB2GRAY); // int predictedLabel = self->rec->predict(im); - + int predictedLabel = -1; double confidence = 0.0; self->rec->predict(im, predictedLabel, confidence); -// std::cout << confidence; - return scope.Close(Number::New(predictedLabel)); - + + v8::Local res = v8::Object::New(); + res->Set(v8::String::New("id"), v8::Number::New(predictedLabel)); + res->Set(v8::String::New("confidence"), v8::Number::New(confidence)); + + return scope.Close(res); } #endif // End version > 2.4