//Метод для реинициализации трекера, принимает в себя тип детектирования и изображение
        //Возвращает инициализированный трекер
        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();
 }
Пример #3
0
        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"));
            }
        }