Exemple #1
0
        private async void PosController_PoseUpdated(ApriltagPoseEstimation pose)
        {
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                lock (_frameLock)
                {
                    var frame    = pose.Frame;
                    var bgraData = new byte[frame.Data.Length];

                    var srcMat  = new Mat(frame.Height, frame.Width, MatType.CV_8UC4, frame.Data);
                    var bgraMat = new Mat();

                    Cv2.CvtColor(srcMat, bgraMat, ColorConversionCodes.RGBA2BGRA);

                    Marshal.Copy(bgraMat.Data, bgraData, 0, frame.Data.Length);

                    if (LiveFrameSource == null || LiveFrameSource.PixelWidth != frame.Width || LiveFrameSource.PixelHeight != frame.Height)
                    {
                        LiveFrameSource      = new WriteableBitmap(frame.Width, frame.Height);
                        LiveFeedImage.Source = LiveFrameSource;
                    }

                    bgraData.AsBuffer().CopyTo(LiveFrameSource.PixelBuffer);

                    LiveFrameSource.Invalidate();
                    //PoseText.Text = $"tag id: {pose.TagId} yaw: {pose.Yaw} pitch: {pose.Pitch} roll: {pose.Roll} tx: {pose.Tx} ty: {pose.Ty} tz: {pose.Tz}";
                }
            });
        }
Exemple #2
0
        private async void Instance_PoseUpdated(ApriltagPoseEstimation pose)
        {
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                lock (_frameLock)
                {
                    //var frame = pose.Frame;
                    //var bgraData = new byte[frame.Data.Length];

                    //var srcMat = new Mat(frame.Height, frame.Width, MatType.CV_8UC4, frame.Data);
                    //var bgraMat = new Mat();

                    //Cv2.CvtColor(srcMat, bgraMat, ColorConversionCodes.RGBA2BGRA);

                    //Marshal.Copy(bgraMat.Data, bgraData, 0, frame.Data.Length);

                    //if (LiveFeedSource == null || LiveFeedSource.PixelWidth != frame.Width || LiveFeedSource.PixelHeight != frame.Height)
                    //{
                    //    LiveFeedSource = new WriteableBitmap(frame.Width, frame.Height);
                    //    LiveFeedImage.Source = LiveFeedSource;
                    //}

                    //bgraData.AsBuffer().CopyTo(LiveFeedSource.PixelBuffer);

                    //LiveFeedSource.Invalidate();

                    var tempAverrageQrIndex = 0;
                    var tempAverageQrCount  = 0;

                    foreach (var result in pose.DetectResults)
                    {
                        //Debug.Print($"{ result.BarcodeText}\n");

                        var locReg = new Regex(@"^[A-Z]{2}[0-9]{1}[0-9]{2}[0-9][0-9]{2}$");


                        // only care about location tag
                        if (locReg.Match(result.BarcodeText).Success)
                        {
                            var LocationTag = result.BarcodeText;
                            var pos         = Regex.Match(result.BarcodeText, @"(.{2})\s*$");;
                            var num         = Int32.Parse(pos.Value);

                            tempAverrageQrIndex = tempAverrageQrIndex + num;
                            //AverrageQrIndex = AverrageQrIndex + num;
                            tempAverageQrCount += 1;
                        }
                    }

                    AverrageQrCount = tempAverageQrCount;
                    AverrageQrIndex = tempAverrageQrIndex;

                    //Debug.Print($"LocationTag: {ImageFrameCount} - { AverrageQrIndex}, {AverrageQrCount}, {AverrageQrIndex / AverrageQrCount} \n");
                    if (AverrageQrCount > 0)
                    {
                        FlightStacks.Instance._positionController.CurrentIndex = AverrageQrIndex / AverrageQrCount;
                    }

                    //PoseText.Text = $"tag id: {pose.TagId} yaw: {pose.Yaw} pitch: {pose.Pitch} roll: {pose.Roll} tx: {pose.Tx} ty: {pose.Ty} tz: {pose.Tz}";
                }
            });
        }