//Метод для реинициализации трекера, принимает в себя тип детектирования и изображение //Возвращает инициализированный трекер public static MultiTracker Reinit_Tracker(InitTypes type, Mat frame) { //Результаты детектирования для иницилазиции KFC трекеров List <Rectangle> Result = new List <Rectangle>(); //Детектирование с помощью каскадов Хаара if (type == InitTypes.Haar) { var Rects = Haar.DetectMultiScale(frame, HScaleFactor, HMinNeighbors, HMinSize, HMaxSize); foreach (var rect in Rects) { if (rect != null) { Result.Add(rect); } } } //Детектирования с помощью Хог дескриптора else { var RowRects = Hog.DetectMultiScale(frame, 0, HogWinStride, scale: HogScaleFactor); foreach (var rowRect in RowRects) { Result.Add(rowRect.Rect); } } //Инициализация KCF трекерами var TTracker = new MultiTracker(); foreach (var rect in Result) { TTracker.Add(new TrackerKCF(), frame, rect); } return(TTracker); }
//Обработчик на событие загрузки окна private void MetroWindow_Loaded(object sender, RoutedEventArgs e) { //Initialization GetSettingsFromFile(); //Первоначальная инициализация объекта захвата изображений для тесов Capture = new VideoCapture(FileName); //Инициализация каскада Хаара Haar = new CascadeClassifier(Path.GetFullPath(Properties.Settings.Default.HaarPath)); //Инициализация SVM детектора Hog.SetSVMDetector(HOGDescriptor.GetDefaultPeopleDetector()); //Перерисовка некоторых значений на экране RedrawComponents(); }
void Run(string[] args) { var dir = args.Length >= 1 ? args[0] : ""; version = default(Classic.Version); string pigName = null; string palName = null; string hogName = null; string[] polyNames = null; if (File.Exists(Path.Combine(dir, "descent2.hog")) && File.Exists(Path.Combine(dir, "descent2.ham")) && File.Exists(Path.Combine(dir, "groupa.pig"))) { version = Classic.Version.D2; hogName = "descent2.hog"; pigName = "groupa.pig"; palName = "groupa.256"; polyNames = d2polymodels; } else if (File.Exists(Path.Combine(dir, "descent.hog")) && File.Exists(Path.Combine(dir, "descent.pig"))) { version = Classic.Version.D1; hogName = "descent.hog"; pigName = "descent.pig"; palName = "palette.256"; polyNames = d1polymodels; } if (version == Classic.Version.UNKNOWN) { if (dir == "") { Console.WriteLine("Please specify a Descent 1 / Descent 2 data directory as the first argument, e.g. DesDump c:\\games\\descent"); Console.WriteLine("Optionally add an output directory, otherwise files will be written to the current directory."); } else { Console.WriteLine("No Descent 1 / Descent 2 data files found in " + dir); } return; } var hog = new Hog(Path.Combine(dir, hogName)); byte[] vgaPal = hog.ItemData(palName); pal = ClassicLoader.VgaPalConv(vgaPal); pal32 = new Color[256]; for (int i = 0; i < 256; i++) { pal32[i] = new Color(pal[i * 3], pal[i * 3 + 1], pal[i * 3 + 2], 255); } pig = new Pig(Path.Combine(dir, pigName)); if (version == Classic.Version.D2) { byte[] bytes = File.ReadAllBytes(Path.Combine(dir, "descent2.ham")); data = new ClassicData(); data.Read(new BinaryReader(new MemoryStream(bytes, 8, bytes.Length - 8)), version); } else { pig.ReadTableData(out data); } var outDir = args.Length >= 2 ? args[1] : ""; //for (int robotIdx = 0; robotIdx < data.N_robot_types; robotIdx++) // DumpModel(data.RobotInfo[robotIdx].model_num, Path.Combine(outDir, robots[robotIdx].Replace(' ', '_') + ".obj")); for (int modelIdx = 0; modelIdx < data.N_polygon_models; modelIdx++) { string name = modelIdx < polyNames.Length ? polyNames[modelIdx] : "model_" + modelIdx.ToString("000"); DumpModel(modelIdx, Path.Combine(outDir, name.Replace(' ', '_') + ".obj")); } }