Esempio n. 1
0
 public void Init()
 {
     using (var mt = MultiTracker.Create())
     {
         GC.KeepAlive(mt);
     }
 }
Esempio n. 2
0
        public void AddMany2()
        {
            var bbox1     = new Rect2d(10, 10, 200, 200);
            var bbox2     = new Rect2d(300, 300, 100, 100);
            var bboxArray = new Rect2d[] { bbox1, bbox2, };

            using (var mt = MultiTracker.Create())
            {
                using (var tracker1 = TrackerMIL.Create())
                    using (var vc = Image("lenna.png"))
                    {
                        var ret = mt.Add(
                            new Tracker[] { tracker1, tracker1, },
                            vc,
                            bboxArray);
                        Assert.False(ret); // duplicate init call
                    }
            }

            using (var mt = MultiTracker.Create())
            {
                using (var tracker1 = TrackerMIL.Create())
                    using (var tracker2 = TrackerMIL.Create())
                        using (var vc = Image("lenna.png"))
                        {
                            var ret = mt.Add(
                                new Tracker[] { tracker1, tracker2, },
                                vc,
                                bboxArray);
                            Assert.True(ret);
                        }
            }
        }
        //Метод для реинициализации трекера, принимает в себя тип детектирования и изображение
        //Возвращает инициализированный трекер
        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);
        }
Esempio n. 4
0
        public PackageTracker(IWebPoster webPoster, IGeocodeDb geocodeDb)
        {
            //Todo: This is a bad place to load these:
            var uspsUserName = WebConfigurationManager.AppSettings["UspsUserName"];
            var uspsPassword = WebConfigurationManager.AppSettings["UspsPassword"];

            var fedexKey           = WebConfigurationManager.AppSettings["FedexKey"];
            var fedexPassword      = WebConfigurationManager.AppSettings["FedexPassword"];
            var fedexAccountNumber = WebConfigurationManager.AppSettings["FedexAccountNumber"];
            var fedexMeterNumber   = WebConfigurationManager.AppSettings["FedexMeterNumber"];


            var coreTrackers = new List <ITracker>();

            coreTrackers.Add(new Tracking.Simulation.SimulationTracker());
            coreTrackers.Add(new UpsTracker());
            coreTrackers.Add(new UspsTracker(new PostUtility(), uspsUserName, uspsPassword, true));
            coreTrackers.Add(new FedexTracker(new TrackService(), fedexKey, fedexPassword, fedexAccountNumber, fedexMeterNumber, false));
            //coreTrackers.Add(new DhlTracker(new PostUtility(), "", "");

            var multiTracker        = new MultiTracker(coreTrackers);
            var cacheTracker        = new CacheTracker(multiTracker);
            var emptyTracker        = new EmptyTrackingNumberTracker(cacheTracker);
            var loggingTracker      = new LoggingTracker(emptyTracker);
            var sanitizerTracker    = new TrackingNumberStandardizerTracker(loggingTracker);
            var geocodingTracker    = new GeocodingTracker(sanitizerTracker, geocodeDb);
            var errorHandlerTracker = new ErrorHandlerTracker(geocodingTracker);

            _defaultTracker = errorHandlerTracker;
        }
Esempio n. 5
0
        private void Init()
        {
            rgbMat = new Mat();

            if (capture.isOpened())
            {
                Debug.Log("capture.isOpened() true");
            }
            else
            {
                Debug.Log("capture.isOpened() false");
            }


            Debug.Log("CAP_PROP_FORMAT: " + capture.get(Videoio.CAP_PROP_FORMAT));
            Debug.Log("CV_CAP_PROP_PREVIEW_FORMAT: " + capture.get(Videoio.CV_CAP_PROP_PREVIEW_FORMAT));
            Debug.Log("CAP_PROP_POS_MSEC: " + capture.get(Videoio.CAP_PROP_POS_MSEC));
            Debug.Log("CAP_PROP_POS_FRAMES: " + capture.get(Videoio.CAP_PROP_POS_FRAMES));
            Debug.Log("CAP_PROP_POS_AVI_RATIO: " + capture.get(Videoio.CAP_PROP_POS_AVI_RATIO));
            Debug.Log("CAP_PROP_FRAME_COUNT: " + capture.get(Videoio.CAP_PROP_FRAME_COUNT));
            Debug.Log("CAP_PROP_FPS: " + capture.get(Videoio.CAP_PROP_FPS));
            Debug.Log("CAP_PROP_FRAME_WIDTH: " + capture.get(Videoio.CAP_PROP_FRAME_WIDTH));
            Debug.Log("CAP_PROP_FRAME_HEIGHT: " + capture.get(Videoio.CAP_PROP_FRAME_HEIGHT));

            capture.grab();
            capture.retrieve(rgbMat, 0);
            int frameWidth  = rgbMat.cols();
            int frameHeight = rgbMat.rows();

            colors  = new Color32[frameWidth * frameHeight];
            texture = new Texture2D(frameWidth, frameHeight, TextureFormat.RGBA32, false);
            gameObject.transform.localScale = new Vector3((float)frameWidth, (float)frameHeight, 1);
            float widthScale  = (float)Screen.width / (float)frameWidth;
            float heightScale = (float)Screen.height / (float)frameHeight;

            if (widthScale < heightScale)
            {
                Camera.main.orthographicSize = ((float)frameWidth * (float)Screen.height / (float)Screen.width) / 2;
            }
            else
            {
                Camera.main.orthographicSize = (float)frameHeight / 2;
            }
            capture.set(Videoio.CAP_PROP_POS_FRAMES, 0);


            gameObject.GetComponent <Renderer> ().material.mainTexture = texture;


            trackers = new MultiTracker("KCF");
            objects  = new MatOfRect2d();

            trackingColorList = new List <Scalar> ();
            selectedPointList = new List <Point> ();
        }
Esempio n. 6
0
        public void Update()
        {
            // ETHZ dataset
            // ETHZ is Eidgenössische Technische Hochschule Zürich, in Deutsch
            // https://data.vision.ee.ethz.ch/cvl/aess/cvpr2008/seq03-img-left.tar.gz
            // This video could be research data and it may not allow to use commercial use.
            // This test can not track person perfectly but it is enough to test whether unit test works.

            // This rect indicates person who be captured in first frame
            var bb = new Rect2d(286, 146, 70, 180);

            // If you want to save markers image, you must change the following values.
            const string path    = "C:\\TrackerTest_Update";
            const string basedir = "ETHZ\\seq03-img-left\\";

            using (var mt = MultiTracker.Create())
                using (var tracker1 = TrackerTLD.Create())
                    using (var tracker2 = TrackerMIL.Create())
                        using (var tracker3 = TrackerBoosting.Create())
                        {
                            var randomColors = Enumerable.Range(0, 3).Select(_ => Scalar.RandomColor()).ToArray();
                            foreach (var i in Enumerable.Range(0, 21))
                            {
                                var file = $"image_{i:D8}_0.png";
                                using (var mat = Image(Path.Combine(basedir, file)))
                                {
                                    Rect2d[] boundingBoxes;
                                    if (i == 0)
                                    {
                                        boundingBoxes = Enumerable.Repeat(bb, 3).ToArray();
                                        mt.Add(
                                            new Tracker[] { tracker1, tracker2, tracker3 },
                                            mat,
                                            boundingBoxes);
                                    }
                                    else
                                    {
                                        mt.Update(mat, out boundingBoxes);
                                    }

                                    if (Debugger.IsAttached)
                                    {
                                        Directory.CreateDirectory(path);

                                        for (int j = 0; j < boundingBoxes.Length; j++)
                                        {
                                            mat.Rectangle(boundingBoxes[j].ToRect(), randomColors[j]);
                                        }
                                        Cv2.ImWrite(Path.Combine(path, file), mat);
                                    }
                                }
                            }
                        }
        }
Esempio n. 7
0
 public void AddOne()
 {
     using (var mt = MultiTracker.Create())
     {
         using (var tracker = TrackerKCF.Create())
             using (var vc = Image("lenna.png"))
             {
                 var ret = mt.Add(tracker, vc, new Rect2d(220, 60, 200, 220));
                 Assert.True(ret);
             }
     }
 }
Esempio n. 8
0
 public void AddMany()
 {
     using (var mt = MultiTracker.Create())
     {
         using (var tracker1 = TrackerTLD.Create())
             using (var tracker2 = TrackerMIL.Create())
                 using (var tracker3 = TrackerBoosting.Create())
                     using (var vc = Image("lenna.png"))
                     {
                         var ret = mt.Add(
                             new Tracker[] { tracker1, tracker2, tracker3 },
                             vc,
                             Enumerable.Repeat(new Rect2d(220, 60, 200, 220), 3).ToArray());
                         Assert.True(ret);
                     }
     }
 }
Esempio n. 9
0
        public void OnResetTrackerButton()
        {
            if (trackers != null)
            {
                trackers.Dispose();
                trackers = null;
            }
            if (objects != null)
            {
                objects.Dispose();
                objects = null;
            }

            trackers = new MultiTracker("KCF");
            objects  = new MatOfRect2d();
            trackingColorList.Clear();
            selectedPointList.Clear();
        }
Esempio n. 10
0
        /// <summary>
        /// Raises the video capture to mat helper initialized event.
        /// </summary>
        public void OnVideoCaptureToMatHelperInitialized()
        {
            Debug.Log("OnVideoCaptureToMatHelperInitialized");

            Mat rgbMat = sourceToMatHelper.GetMat();

            texture = new Texture2D(rgbMat.cols(), rgbMat.rows(), TextureFormat.RGB24, false);
            Utils.fastMatToTexture2D(rgbMat, texture);

            gameObject.GetComponent <Renderer>().material.mainTexture = texture;

            gameObject.transform.localScale = new Vector3(rgbMat.cols(), rgbMat.rows(), 1);
            Debug.Log("Screen.width " + Screen.width + " Screen.height " + Screen.height + " Screen.orientation " + Screen.orientation);


            float width  = rgbMat.width();
            float height = rgbMat.height();

            float widthScale  = (float)Screen.width / width;
            float heightScale = (float)Screen.height / height;

            if (widthScale < heightScale)
            {
                Camera.main.orthographicSize = (width * (float)Screen.height / (float)Screen.width) / 2;
            }
            else
            {
                Camera.main.orthographicSize = height / 2;
            }


            trackers = MultiTracker.create();
            objects  = new MatOfRect2d();

            trackingColorList = new List <Scalar>();
            selectedPointList = new List <Point>();
        }