Exemplo n.º 1
0
        private async void OnObjectsDetected([NotNull] Task <List <DetectedObject> > detectedObjectsTask)
        {
            if (detectedObjectsTask == null)
            {
                throw new ArgumentNullException(nameof(detectedObjectsTask));
            }
            if (detectedObjectsTask.Result == null)
            {
                return;
            }
            List <DetectedObject> detectedObjects = await detectedObjectsTask;

            if (detectedObjects.Count == 0)
            {
                Debug.Log("No objects detected");
            }
            if (_objectDetectionService.detectOnRepeat)
            {
                List <TrackedObject> trackedObjects = detectedObjectsTask.Result.Select(detectedObject => new TrackedObject(detectedObject)).ToList();
                FPSUtils.TrackTick();
                Vector2 unprojectionOffset = ObjectTrackingService.unprojectionOffset;
                _visualizationManager.UpdateTrackedObjects(trackedObjects, unprojectionOffset);
            }
            else
            {
                ObjectTrackingService.Reset();
                List <TrackedObject> trackedObjects = ObjectTrackingService.InitializeTrackers(detectedObjects);
                if (detectedObjects.Count != trackedObjects.Count)
                {
                    Debug.LogWarning("Could not initialize tracker for all detected objects");
                }
                Vector2 unprojectionOffset = ObjectTrackingService.unprojectionOffset;
                _visualizationManager.UpdateTrackedObjects(trackedObjects, unprojectionOffset);
            }
        }
        public List <TrackedObject> TrackSync(CameraFrame frame)
        {
            if (frame == null)
            {
                throw new ArgumentNullException(nameof(frame));
            }
            stopWatch.Reset();
            stopWatch.Start();
            List <TrackedObject> trackedObjects = ObjectTracker.Update(frame);

            stopWatch.Stop();
            FPSUtils.TrackTick();
            _trackedObjects = trackedObjects;
            return(trackedObjects);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Depending on color format, the frame is passed on or buffered for conversion.
 /// </summary>
 private void OnFrameArrived(object sender, FrameArrivedEventArgs e)
 {
     if (Format == ColorFormat.Grayscale)
     {
         _frame = e.Frame;
         FPSUtils.VideoTick();
         FrameArrived?.Invoke(this, e);
     }
     else
     {
         if (IsProcessingFrame)
         {
             return;
         }
         IsProcessingFrame  = true;
         CurrentCameraFrame = e.Frame;
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// Invoked if the NV12 to RGB conversion is complete and the data is ready to be read to the CPU.
        /// </summary>
        private void OnCompleteReadback(AsyncGPUReadbackRequest request)
        {
            if (request.hasError)
            {
                Debug.LogError("GPU readback error");
                return;
            }

            MatUtils.copyToMat(request.GetData <uint>(), _rgb);
            Core.flip(_rgb, _rgb, 0); // image is flipped on x-axis
            CameraFrame           newFrame = new CameraFrame(_rgb, CurrentCameraFrame.Intrinsic, CurrentCameraFrame.Extrinsic, CurrentCameraFrame.Width, CurrentCameraFrame.Height, CurrentCameraFrame.FrameCount, Format);
            FrameArrivedEventArgs args     = new FrameArrivedEventArgs(newFrame);

            _frame = newFrame;
            FrameArrived?.Invoke(this, args);
            FPSUtils.VideoTick();
            NewFrameAvailable = true;
            IsProcessingFrame = false;
        }
Exemplo n.º 5
0
    private void LateUpdate()
    {
        _renderDeltaTime = FPSUtils.GetRenderDeltaTime();
        _trackDeltaTime  = FPSUtils.GetTrackDeltaTime();
        _videoDeltaTime  = FPSUtils.GetVideoDeltaTime();

        if (_displayRenderFPS)
        {
            renderFPS.text = $"Render: {_renderDeltaTime:0.0} ms ({GetRenderFPS():0.} fps)";
        }

        if (_displayVideoFPS)
        {
            videoFPS.text = $"Video:   {_videoDeltaTime:0.0} ms ({GetVideoFPS():0.} fps)";
        }

        if (_displayTrackFPS)
        {
            trackFPS.text = $"Track:   {_trackDeltaTime:0.0} ms ({GetTrackFPS():0.} fps)";
        }
    }
Exemplo n.º 6
0
 private void LateUpdate()
 {
     HandleKeyboardInput();
     FPSUtils.RenderTick();
 }
Exemplo n.º 7
0
 void Start()
 {
     fpsUtils = GameObject.Find("FPS").GetComponent <FPSUtils>();
 }