コード例 #1
0
// 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;
	}
}
コード例 #2
0
// 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;
}