Example #1
0
 private void MFBPressed(object sender, FrameReadyEventArgs e)
 {
     if (!Paused)
     {
         OnMFB?.Invoke(this, e);
     }
 }
        private void _camera_FrameReady(object sender, FrameReadyEventArgs e)
        {
            Bitmap redaction = (Bitmap)e.Frame.Bitmap.Clone();

            // draw points in buffer to image
            using (Graphics g = Graphics.FromImage(redaction))
            {
                if (_parser.CalibratorGrid != null)
                {
                    using (SolidBrush brush = new SolidBrush(Color.Black))
                    {
                        Point bottomLeft  = _parser.CalibratorGrid.BottomLeft;
                        Point topLeft     = _parser.CalibratorGrid.TopLeft;
                        Point bottomRight = _parser.CalibratorGrid.BottomRight;
                        Point topRight    = _parser.CalibratorGrid.TopRight;
                        g.DrawLine(Pens.Red, bottomLeft, bottomRight);
                        g.DrawLine(Pens.Red, bottomLeft, topLeft);
                        g.DrawLine(Pens.Red, topRight, bottomRight);
                        g.DrawLine(Pens.Red, topRight, topLeft);
                    }
                }


                // TODO: Object is currently in use elsewhere..
                this.cameraPictureBox.Image = redaction;
            }
        }
Example #3
0
 private void ProcessFrame(object sender, FrameReadyEventArgs e)
 {
     if (!Paused)
     {
         FrameReady?.Invoke(this, e);
     }
 }
        private void NewImage(object sender, FrameReadyEventArgs e)
        {
            var bm = (Bitmap)e.Frame.Bitmap.Clone();

            if (_parser != null && _parser.CalibratorGrid != null && !_parser.CalibratorGrid.TopLeft.IsEmpty)
            {
                using (var g = Graphics.FromImage(bm))
                {
                    g.DrawLine(new Pen(System.Drawing.Color.Red), _parser.CalibratorGrid.TopLeft, _parser.CalibratorGrid.TopRight);
                    g.DrawLine(new Pen(System.Drawing.Color.Red), _parser.CalibratorGrid.TopLeft, _parser.CalibratorGrid.BottomLeft);
                    g.DrawLine(new Pen(System.Drawing.Color.Red), _parser.CalibratorGrid.BottomRight, _parser.CalibratorGrid.TopRight);
                    g.DrawLine(new Pen(System.Drawing.Color.Red), _parser.CalibratorGrid.BottomRight, _parser.CalibratorGrid.BottomLeft);
                    g.Flush();
                }
            }
            if (NewGridFrame != null)
            {
                NewGridFrame(this, new FrameReadyEventArgs(new VideoFrame(0, bm)));
            }
            if (Dispatcher.CheckAccess())
            {
                CameraImage.Source = Tools.CopyBitmap(bm);
            }
            else
            {
                Dispatcher.Invoke(() => CameraImage.Source = Tools.LoadBitmap(bm));
            }
        }
Example #5
0
        protected override void Analyze(FrameReadyEventArgs frameReadyEventArgs)
        {
            if (!Configuration.movementNavigation)
            {
                return;
            }
            var frames = _framesCollector.GetFrames().ToList();

            if (frames.Count == 0)
            {
                return;
            }

            var     joints = frames.Select(a => a.GetNearestSkeleton().Joints.First(j => j.JointType == _joint)).ToList();
            Vector3 calculateDisplacementVector = CalculateDisplacement(joints);

            if (calculateDisplacementVector.Length > MinimalVectorLength)
            {
                _oldDisplacementVector = calculateDisplacementVector;
            }
            var duration = CalculateDuration(frames);

            LogString.Log("Event: ContinousMovementAnalyzer: " + calculateDisplacementVector.X + " " + calculateDisplacementVector.Y + " " + calculateDisplacementVector.Z);
            Raise(() => RaiseEvent(frames, _oldDisplacementVector, duration));
        }
        // When a new frame is received, display it in the UI, viewCam0
        private void FrameReady_cam0(object sender, FrameReadyEventArgs e)
        {
            AsyncFormUpdate(new Action(() => viewCam0.Image = e.Bitmap));
            // CHECK IF CAMERA VIEW HAS CHANGED

            if (!returnedData.ContainsKey("cameraView"))
            {
                return;
            }

            if (returnedData["cameraView"].ToString() == ((CameraPort)currentCameraView).ToString())
            {
                return;
            }

            // If the cameraView in NT has changed, switch camera views and restart camera
            switch (returnedData["cameraView"].ToString())
            {
            case "REAR":
                currentCameraView = (int)CameraPort.REAR;
                break;

            case "FRONT":
            default:
                currentCameraView = (int)CameraPort.FRONT;
                break;
            }
            StartCamera();
        }
Example #7
0
        private void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
        {
            var rotatedImage = new TransformedBitmap(e.BitmapImage, new RotateTransform(90));


            ImageViewer.Source = rotatedImage;
        }
Example #8
0
        private void OnTrackPen(object sender, FrameReadyEventArgs e)
        {
            /* We allow just 1 Thread to process a picture at a time.
             * If there is already a thread running, we discard the new
             * frame after we waited for half the framerate. So we give
             * time to catch up in two frames.
             */
            if (_semaphore.Wait(20))
            {
                var task = Task.Run(() =>
                {
                    try
                    {
                        ProcessFrame(e.Frame);
                    }
                    finally
                    {
                        _semaphore.Release();
                    }
                });

                // rethrow Exception if necessary
                if (task.Exception != null)
                {
                    Logger.Log(task.Exception);
                }
            }
        }
Example #9
0
        protected override void Analyze(FrameReadyEventArgs frameReadyEventArgs)
        {
            if (!Configuration.dualSwipeNavigation)
            {
                return;
            }
            try
            {
                if (Math.Abs(_leftHandGestrue.Timestamp - _rightHandGestrue.Timestamp) > Epsilon)
                {
                    return;
                }

                if (_leftHandGestrue.Gesture == GesturesEnum.SwipeToLeft && _rightHandGestrue.Gesture == GesturesEnum.SwipeToRight)
                {
                    LogString.Log("Event: SwipeOut");
                    Raise(() => ParallelSwipeDetected(this, new SwipeEventArgs(GesturesEnum.SwipeOut)));
                }
                if (_leftHandGestrue.Gesture == GesturesEnum.SwipeToRight && _rightHandGestrue.Gesture == GesturesEnum.SwipeToLeft)
                {
                    LogString.Log("Event: SwipeIn");
                    Raise(() => ParallelSwipeDetected(this, new SwipeEventArgs(GesturesEnum.SwipeIn)));
                }
            }
            catch (Exception e)
            {
                System.Console.WriteLine("wacek");
            }
        }
    public static FrameReadyEventArgs Create(FrameHeaderType header, byte[] data)
    {
        var args = new FrameReadyEventArgs()
        {
            Servos = new uint[26]
        };
        var br = new BinaryReader(new MemoryStream(data));

        Buffer.BlockCopy(data, 0, args.Servos, 0, args.Servos.Length * 4);
        br.BaseStream.Seek(args.Servos.Length * 4, SeekOrigin.Begin);
        if (header == FrameHeaderType.ESP32Debug)
        {
            args.Model.tlen.x   = br.ReadDouble();
            args.Model.tlen.y   = br.ReadDouble();
            args.Model.tlen.z   = br.ReadDouble();
            args.Model.pos.x    = br.ReadDouble();
            args.Model.pos.y    = br.ReadDouble();
            args.Model.pos.z    = br.ReadDouble();
            args.Model.rot.x    = br.ReadDouble();
            args.Model.rot.y    = br.ReadDouble();
            args.Model.rot.z    = br.ReadDouble();
            args.Model.turnedOn = br.ReadBoolean();
            args.Model.cps      = br.ReadInt32();
        }
        return(args);
    }
Example #11
0
    public void ProcessFrameData(FrameReadyEventArgs args)
    {
        for (int i = 0; i < servos.Length; i++)
        {
            servos[i].ProcessData(args.Servos[i]);
        }
        var model = args.Model;

        float newPosX = 0, newPosY, newPosZ = 0, newRotY = 0;

        if (lastHexaPos != null)
        {
            newPosX = lastHexaPos.Value.x;
            newPosZ = lastHexaPos.Value.z;
        }
        newPosY  = (float)(model.pos.y / 100.0f) + HexConfig.otherJointSize / 2;
        newPosX += (float)(model.tlen.x / 500.0f);
        newPosZ += (float)(model.tlen.z / 500.0f);
        if (lastHexaRotY != null)
        {
            newRotY = lastHexaRotY.Value;
        }
        newRotY -= (float)(model.tlen.y / 10.0f);

        hexaNewRotY     = newRotY;
        hexaNewPosition = new Vector3(newPosX, newPosY, newPosZ);
        Debug.Log($"Model tlen={model.tlen} rot={model.rot} pos={model.pos} pwr={model.turnedOn}");
    }
Example #12
0
        protected override void Analyze(FrameReadyEventArgs frameReadyEventArgs)
        {
            var frames = _framesCollector.GetFrames(LastFrameTimestamp).ToList();

            if (frames.Count == 0)
            {
                return;
            }

            var torsoPosHistory     = frames.Select(a => a.GetNearestSkeleton().Joints.FirstOrDefault(b => b.JointType == TJointType.Spine)).ToList();
            var LeftHandPosHistory  = frames.Select(a => a.GetNearestSkeleton().Joints.FirstOrDefault(b => b.JointType == TJointType.HandLeft)).ToList();
            var RightHandPosHistory = frames.Select(a => a.GetNearestSkeleton().Joints.FirstOrDefault(b => b.JointType == TJointType.HandRight)).ToList();

            var lastLeftHandFrame  = LeftHandPosHistory.Last();
            var lastRightHandFrame = RightHandPosHistory.Last();
            var lastTorsoFrame     = torsoPosHistory.Last();

            var diffLeft  = lastTorsoFrame.Position.Z - lastLeftHandFrame.Position.Z;
            var diffRight = lastTorsoFrame.Position.Z - lastRightHandFrame.Position.Z;

            if (ignoredCalls > 0)
            {
                ignoreCallsTrigger = true;
                ignoredCalls--;
                return;
            }
            else if (ignoreCallsTrigger == true)
            {
                ignoreCallsTrigger = false;
                LeftLastPosition   = lastLeftHandFrame.Position;
                RightLastPosition  = lastRightHandFrame.Position;
                LastHandsDistance  = CalculateDistance(lastLeftHandFrame, lastRightHandFrame);
            }

            Calibrate(diffLeft, diffRight);

            bool left  = LeftHandActive(diffLeft, lastLeftHandFrame.Position);
            bool right = RightHandActive(diffRight, lastRightHandFrame.Position);

            if (left && right)
            {
                if (!bothHandsActivated)
                {
                    bothHandsActivated = true;
                    LastHandsDistance  = CalculateDistance(lastLeftHandFrame, lastRightHandFrame);
                    LogString.Log("BothHands Activated");
                }

                NavigateByBothHands(lastLeftHandFrame, lastRightHandFrame, frames);
            }
            else if (left)
            {
                NavigateByLeftHand(lastLeftHandFrame, frames);
            }
            else if (right)
            {
                NavigateByRightHand(lastRightHandFrame, frames);
            }
        }
		private async void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
		{
			InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream();
			await stream.WriteAsync(e.FrameBuffer);
			stream.Seek(0);
			_bmp.SetSource(stream);
			image.Source = _bmp;
		}
Example #14
0
        private static void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
        {
            MjpegDecoder md = (MjpegDecoder)sender;

            render.hasFirst   = true;
            render.currentBMP = MD.Bitmap;
            md.FrameReady    -= mjpeg_FrameReady;
        }
Example #15
0
 private static void OnFrameReady(object sender, FrameReadyEventArgs e)
 {
     Console.Write($"FPS: {sp.FPS}. CPS: {e.Model.cps} Power: {e.Model.turnedOn}. [{e.Servos.Length}]: ");
     for (int i = 0; i < e.Servos.Length; i++)
     {
         Console.Write($"{e.Servos[i]:X} ");
     }
     Console.WriteLine();
 }
Example #16
0
        private void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
        {
            MjpegDecoder md = (MjpegDecoder)sender;

            hasFirst   = true;
            currentBMP = MD.Bitmap;
            draw();
            md.FrameReady -= mjpeg_FrameReady;
        }
 private void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
 {
     using (var stream = new MemoryStream(e.FrameBuffer))
     {
         viewport.Source = BitmapFrame.Create(stream, BitmapCreateOptions.None,
                                              BitmapCacheOption.OnLoad);
     }
     textLoading.IsEnabled = false;
 }
Example #18
0
        private async void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
        {
            InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream();
            await stream.WriteAsync(e.FrameBuffer);

            stream.Seek(0);
            _bmp.SetSource(stream);
            image.Source = _bmp;
        }
        /// <summary>
        /// This is the callback when a new bitmap is available from the video camera
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
        {
            this.videoImage.Source = e.BitmapImage;
            _lastUpdated           = DateTime.Now;

            if (this.noVideoFeedAvailableGrid.Visibility == Visibility.Visible)
            {
                this.videoImage.Opacity = 1.0;
                this.noVideoFeedAvailableGrid.Visibility = Visibility.Collapsed;
            }
        }
Example #20
0
 void OnFrameReady(object sender, FrameReadyEventArgs e)
 {
     if (e.BitmapSource != null)
     {
         this.CameraInfo.Unauthorized = false;
     }
     if (FrameAvailable != null)
     {
         FrameAvailable(sender, e);
     }
 }
Example #21
0
        private void Camera_FrameReady(object sender, FrameReadyEventArgs e)
        {
            // Set the camera source.
            display.Source = e.BitmapImage;

            // Also show the image on the other window
            if (IsShowingOtherWindow)
            {
                OtherWindow.ImageStream = e.BitmapImage;
            }
        }
 internal void NewImg(object sender, FrameReadyEventArgs e)
 {
     if (Dispatcher.CheckAccess())
     {
         CamImg.Source = Tools.CopyBitmap(e.Frame.Bitmap);
     }
     else
     {
         Dispatcher.Invoke(() => CamImg.Source = Tools.LoadBitmap(e.Frame.Bitmap));
     }
 }
        private void OnImageReady(FrameReadyEventArgs e)
        {
            EventHandler <ImageReadyEventArgs> handler = ImageReady;

            if (handler != null)
            {
                handler(this, new ImageReadyEventArgs()
                {
                    BitmapImage = e.BitmapImage
                });
            }
        }
 private void BaseCalibration(object sender, FrameReadyEventArgs e)
 {
     if (_t != null && _t.Exception != null)
     {
         throw _t.Exception;
     }
     if (_sem.CurrentCount >= 1)//_t.Status != TaskStatus.Running)
     {
         _sem.Wait();
         Task.Factory.StartNew(() => _t = CalibThread(e));
     }
 }
 private void BaseCalibration(object sender, FrameReadyEventArgs e)
 {
     if (_t != null && _t.Exception != null)
     {
         Logger.Log(_t.Exception);
     }
     if (_sem.CurrentCount >= 1)
     {
         _sem.Wait();
         Task.Factory.StartNew(() => _t = CalibThread(e));
     }
 }
Example #26
0
        private void MjpegOnFrameReady(object sender, FrameReadyEventArgs e)
        {
            Stream stream = e.FrameBuffer.AsStream();
            var memStream = new MemoryStream();
            stream.CopyToAsync(memStream);
            memStream.Position = 0;
            var bitmap = new BitmapImage();
            bitmap.SetSource(memStream.AsRandomAccessStream());
            image.Source = bitmap;

            _mainPage.DisplayStatus(string.Empty, MainPage.NotifyType.StatusMessage);
        }
Example #27
0
 public void FrameReady(object sender, FrameReadyEventArgs e)
 {
     if (form != null && form.IsActive == true)
     {
         form.Close();
     }
     if (!CamInfo.isLoggedIn)
     {
         CamInfo.isLoggedIn = true;
         updateCameraNameList();
     }
     CamInfo.VideoSource = e.BitmapImage;
 }
        private async void MjpegDecoder_FrameReady(object sender, FrameReadyEventArgs e)
        {
            // Copy the received FrameBuffer to an InMemoryRandomAccessStream.
            using (InMemoryRandomAccessStream ms = new InMemoryRandomAccessStream())
            {
                using (DataWriter writer = new DataWriter(ms.GetOutputStreamAt(0)))
                {
                    writer.WriteBytes(e.FrameBuffer);
                    await writer.StoreAsync();
                }

                // Update source of CameraBitmap with the memory stream
                CameraBitmapImage.SetSource(ms);
            }
        }
Example #29
0
 private async void Mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
 {
     /*MemoryStream memoryStream = new MemoryStream();
      * await memoryStream.WriteAsync(e.FrameBuffer.ToArray(), 0, Convert.ToInt32(e.FrameBuffer.Length));
      *
      * MemoryBuffer mb = new MemoryBuffer(memoryStream);
      *
      * Texture2D texture = new Texture2D();
      * texture.Load(mb);
      *
      * var material = new Material();
      * material.SetTexture(TextureUnit.Diffuse, texture);
      * material.SetTechnique(0, CoreAssets.Techniques.Diff);
      * plane.SetMaterial(material);*/
 }
Example #30
0
 private async void ShowImage(object sender, FrameReadyEventArgs e)
 {
     using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream())
     {
         using (DataWriter writer = new DataWriter(stream.GetOutputStreamAt(0)))
         {
             writer.WriteBytes(e.FrameBuffer);
             await writer.StoreAsync();
         }
         await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
         {
             image.SetSource(stream);
             imgOfStream.Source = image;
         });
     }
 }
Example #31
0
 // Private method
 private void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
 {
     sw.Stop();
     NbPerSecond = sw.ElapsedMilliseconds;
     if (sw.ElapsedMilliseconds == 0)
     {
         NbPerSecond = 9999;
     }
     else
     {
         NbPerSecond = 1000M / sw.ElapsedMilliseconds;
     }
     sw = new Stopwatch();
     sw.Start();
     _lastBitmap = e.Bitmap;
 }
        private async void _mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
        {
            // get it on the UI thread
            await this.Dispatcher.RunAsync(
                CoreDispatcherPriority.Normal,
                async() =>
            {
                // create a new BitmapImage from the JPEG bytes
                var img = new BitmapImage();

                var ras = new MemoryRandomAccessStream(e.FrameBuffer.ToArray());

                await img.SetSourceAsync(ras);
                this.image.Source = img;
            });
        }
        private void handleFrameFn(object sender, FrameReadyEventArgs e)
        {
            //    Int32Rect cropRect = new Int32Rect(400, 380, 300, 200);
            //    BitmapSource croppedImage = new CroppedBitmap(e.BitmapImage, cropRect);
            //    image4.Source = croppedImage;

            if (_rotationAngle != 0)
            {
                TransformedBitmap tmpImage = new TransformedBitmap();

                tmpImage.BeginInit();
                tmpImage.Source = e.BitmapImage; // of type BitmapImage

                RotateTransform transform = new RotateTransform(_rotationAngle);
                tmpImage.Transform = transform;
                tmpImage.EndInit();

                _dispImage.Source = tmpImage;
            }
            else
            {
                _dispImage.Source = e.BitmapImage;
            }
        }
 // Event handler for MjpegDecoder FrameReady event
 private void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
 {
     this.imgStreamDisplay.Source = e.BitmapImage;
 }
Example #35
0
 // Private method
 private void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
 {
     sw.Stop();
     NbPerSecond = sw.ElapsedMilliseconds;
     if (sw.ElapsedMilliseconds == 0)
     {
         NbPerSecond = 9999;
     }
     else
     {
         NbPerSecond = 1000M / sw.ElapsedMilliseconds;
     }
     sw = new Stopwatch();
     sw.Start();
     _lastBitmap = e.Bitmap;
 }
Example #36
0
 private void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
 {
     //Update image on each new frame event
     videoStreamImage.Source = e.BitmapImage;
 }
 private void _decoder_FrameReady(object sender, FrameReadyEventArgs e)
 {
     _panel.BackgroundImage = e.Bitmap;
 }
 private void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
 {
     videoBox.Image = e.Bitmap;
 }
Example #39
0
		private void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
		{
			image.Source = e.BitmapImage;
		}
Example #40
0
        private void mjpeg_FrameReady(object sender, FrameReadyEventArgs e)
        {
            imgVideo.Image = e.Bitmap;

            ImageConverter img = new ImageConverter();
            //byte[] bytes = (byte[])img.ConvertTo(e.Bitmap, typeof(byte[]));
            //ImageListStreamer
            //SendData(bytes);
            var size = e.Bitmap.Size;
            var newFrameSize = new Size(Size.Width - 200, size.Height * (Size.Width) / size.Width);
            if (newFrameSize.Height <= Size.Height)
                imgVideo.Size = newFrameSize;

            //Calculate frame rate
            if (!fpsCalculate.IsRunning)
                fpsCalculate.Start();
            else
            {
                lblFps.Text = (1000.0d / fpsCalculate.ElapsedMilliseconds).ToString("F") + " fps";
                fpsCalculate.Restart();
            }
        }