0% found this document useful (0 votes)
51 views3 pages

Eigenfaces

Download as txt, pdf, or txt
Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1/ 3

using System;

using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Emgu.CV;
using Emgu.CV.Face;
using Emgu.CV.Structure;

namespace Prototipo1802
{
public static class Eigenfaces
{
public static int eigenTrainedImageCounter;

public static List<Image<Gray, byte>> eigenTrainingImages = new


List<Image<Gray, byte>>();
public static List<int> eigenIntlabels = new List<int>();
public static List<string> eigenlabels = new List<string>();

public static EigenFaceRecognizer eigenFaceRecognizer;

public static bool IsTrained;

public static double eigenThreshold = 7000;

public static bool TrainFromFolder()


{
if (IsTrained)
{
eigenTrainedImageCounter = 0;
eigenTrainingImages.Clear();
eigenIntlabels.Clear();
eigenlabels.Clear();
IsTrained = false;
}

try
{
string dataDirectory = Directory.GetCurrentDirectory() +
@"\TrainedFaces";
string[] files = Directory.GetFiles(dataDirectory, "*.jpg",
SearchOption.AllDirectories);

foreach (var file in files)


{
Image<Gray, byte> trainedImage = new Image<Gray, byte>(file);
//trainedImage._EqualizeHist();
eigenTrainingImages.Add(trainedImage);
eigenlabels.Add(FaceData.FileName(file));
eigenIntlabels.Add(eigenTrainedImageCounter);
eigenTrainedImageCounter++;
Console.WriteLine(eigenTrainedImageCounter);
}
eigenFaceRecognizer = new
EigenFaceRecognizer(eigenTrainedImageCounter, eigenThreshold);
eigenFaceRecognizer.Train(eigenTrainingImages.ToArray(),
eigenIntlabels.ToArray());
//eigenFaceRecognizer.Write(dataDirectory +
@"\0TrainedDataEigen.yaml");
//eigenFaceRecognizer.Read(dataDirectory +
@"\0TrainedDataEigen.yaml");
}
catch (Exception ex)
{
MessageBox.Show("Erro: " + ex.Message);
return IsTrained = false;
}
return IsTrained = true;
}

public static bool TrainFromDataBase()


{
if (IsTrained)
{
eigenTrainedImageCounter = 0;
eigenTrainingImages.Clear();
eigenIntlabels.Clear();
eigenlabels.Clear();
IsTrained = false;
}

try
{
FaceDAL faceDAL = new FaceDAL();
var list = faceDAL.SelectAll();

foreach (var item in list)


{
MemoryStream memoryStream = new MemoryStream(item.Image);
Image<Gray, byte> trainedImage = new Image<Gray,
byte>((Bitmap)Image.FromStream(memoryStream));
eigenTrainingImages.Add(trainedImage);
eigenlabels.Add(FaceData.FileName(item.Name));
eigenIntlabels.Add(eigenTrainedImageCounter);
eigenTrainedImageCounter++;
}
eigenFaceRecognizer = new
EigenFaceRecognizer(eigenTrainedImageCounter, eigenThreshold);
eigenFaceRecognizer.Train(eigenTrainingImages.ToArray(),
eigenIntlabels.ToArray());
//eigenFaceRecognizer.Write(dataDirectory +
@"\0TrainedDataEigen.yaml");
//eigenFaceRecognizer.Read(dataDirectory +
@"\0TrainedDataEigen.yaml");
}
catch (Exception ex)
{
MessageBox.Show("Erro: " + ex.Message);
return IsTrained = false;
}
return IsTrained = true;
}
}
}

You might also like