// Find user given face // --recognizeface <targa filename> <userbase file> <eigenfaces file> <matches> void Main::recognizeFace() { std::string filename=args.nextArg(); std::string userbasename = args.nextArg(); std::string eigfacesname = args.nextArg(); int matches=args.nextPositiveInt(); EigFaces eigenfaces; eigenfaces.load(eigfacesname); Users userbase; userbase.load(userbasename); Face face(eigenfaces.getWidth(), eigenfaces.getHeight()); face.loadTarga(filename); std::string name; eigenfaces.recognizeFace(face, userbase); std::cout << "Face '" << filename << "' "; std::cout << "recognized as being closest too:" << std::endl; for (int i=0; i< matches; i++) { const User& user=userbase[i]; std::cout << i << ": " << user.getName() << "; MSE: " << user.getMse() << std::endl; } }
// Verify an identity (determine if a face is person x's): // --verifyface <targa filename> <userbase file> <person name> <eigenfaces filename> <maximum v coefficients MSE> void Main::verifyFace() { std::string filename = args.nextArg(); std::string userbasename = args.nextArg(); std::string username = args.nextArg(); std::string eigfilename = args.nextArg(); double max_coefficients_mse = args.nextPositiveFloat(); EigFaces eigenfaces; eigenfaces.load(eigfilename); Users userbase; userbase.load(userbasename); Face face(eigenfaces.getWidth(), eigenfaces.getHeight()); face.loadTarga(filename); const User& user= userbase[username]; double mse; bool verified=eigenfaces.verifyFace(face, user, max_coefficients_mse, mse); std::cout << "MSE: " << mse << std::endl; std::cout << "Image '" << filename << "' is"; std::cout << (verified?" ":" not "); std::cout << "a picture of " << username << "'s face." << std::endl; }