Использование файлов каскадов Хаара (пакет Emgu.CV)
Данный файл загружает из файлов и хранит каскады Хаара, которые используются при поиске лиц, автомобильных номеров и др.
Скачать файлы каскадов
Код:
public class HaarCascadeClassifier
{
public HaarCascadeClassifier(ClassifierType tp, string _xmlfilesfolder)
{
IsActive = false;
xmlfilesfolder = $"{Directory.GetCurrentDirectory()}\\{_xmlfilesfolder}";
if (!Directory.Exists(xmlfilesfolder))
return;
Initialize();
if (!IsActive)
return;
// загрузка файла каскада нужного типа
// MessageBox.Show(xmls_db[tp]);
classifier = new CascadeClassifier(xmls_db[tp]);
}
private void Initialize()
{
IsActive = true;
xmls_db = new Dictionary<ClassifierType, string>();
xmls_db.Add(ClassifierType.FaceAnfas, $"{xmlfilesfolder}\\haarcascade_frontalface_alt2.xml");
xmls_db.Add(ClassifierType.FaceProfile, $"{xmlfilesfolder}\\haarcascade_profileface.xml");
xmls_db.Add(ClassifierType.HumanFigureFull, $"{xmlfilesfolder}\\haarcascade_fullbody.xml");
xmls_db.Add(ClassifierType.HumanFigureUpper, $"{xmlfilesfolder}\\haarcascade_upperbody.xml");
xmls_db.Add(ClassifierType.HumanFigureLower, $"{xmlfilesfolder}\\haarcascade_lowerbody.xml");
xmls_db.Add(ClassifierType.LicencePlateRussian, $"{xmlfilesfolder}\\haarcascade_frontalface_alt2.xml");
// xmls_db.Add(ClassifierType.LicencePlateRussian, $"{xmlfilesfolder}\\haarcascade_licence_plate_rus_16stages.xml");
foreach (ClassifierType t in xmls_db.Keys)
if (!File.Exists(xmls_db[t]))
IsActive = false;
}
public CascadeClassifier classifier;
private bool IsActive;
private Dictionary<ClassifierType, string> xmls_db;
private string xmlfilesfolder;
public enum ClassifierType
{
FaceAnfas = 0,
FaceProfile = 1,
HumanFigureFull = 2,
HumanFigureLower = 3,
HumanFigureUpper = 4,
LicencePlateRussian = 5
}
}