public void Init() { using (var mt = MultiTracker.Create()) { GC.KeepAlive(mt); } }
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); }
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; }
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> (); }
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); } } } } }
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); } } }
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); } } }
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(); }
/// <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>(); }