Beispiel #1
0
 private void ReportProgress(ProcessedFrame processed)
 {
     if (processed.Bitmap != null)
     {
         imageBytes = GetByteArrayFromImage(processed.Bitmap);
     }
 }
Beispiel #2
0
        private void DrawAugmentedScene(ProcessedFrame processedFrame, Mat image)
        {
            // Init augmentation projection
            Matrix4 projectionMatrix;
            int     w = image.Cols;
            int     h = image.Rows;

            projectionMatrix = BuildProjectionMatrix(_calibration, w, h);

            GL.MatrixMode(MatrixMode.Projection);
            GL.LoadMatrix(ref projectionMatrix);

            GL.MatrixMode(MatrixMode.Modelview);
            GL.LoadIdentity();

            if (processedFrame.IsPatternPresent)
            {
                // Set the pattern transformation
                Matrix4 glMatrix = processedFrame.PatternPose.GetMat44();
                GL.LoadMatrix(ref glMatrix);

                // Render model
                DrawCoordinateAxis();
                DrawCubeModel();
            }
        }
        public ProcessedFrame ProcessSingleFrame(SlitherFrame slitherFrame)
        {
            var processedFrame = new ProcessedFrame();

            processedFrame.CollisionMap = _collisionMapProcessor.ProcessCollision(slitherFrame);
            processedFrame.SnakeLength  = slitherFrame.SnakeLength;
            processedFrame.Time         = slitherFrame.Time;
            processedFrame.SnakeAngle   = slitherFrame.Snake.Ang;

            return(processedFrame);
        }
        public ProcessedFrame ProcessFrame(List <SlitherFrame> frames, int index)
        {
            var processedFrame = new ProcessedFrame();

            processedFrame.Outcome        = _outcomeProcessor.ProcessOutcome(frames, index);
            processedFrame.CollisionMap   = _collisionMapProcessor.ProcessCollision(frames[index]);
            processedFrame.SnakeLength    = frames[index].SnakeLength;
            processedFrame.Time           = frames[index].Time;
            processedFrame.SnakeAngle     = frames[index].Snake.Ang;
            processedFrame.SnakeSprinting = frames[index].Snake.Sp > 10;

            return(processedFrame);
        }
Beispiel #5
0
        public double GetMatchConfidence(ProcessedFrame source, ProcessedFrame target)
        {
            var lowest  = CollisionMapMatchAnalyzer.GetMatchConfidence(source.CollisionMap.LowestResolution, target.CollisionMap.LowestResolution);
            var low     = CollisionMapMatchAnalyzer.GetMatchConfidence(source.CollisionMap.LowResolution, target.CollisionMap.LowResolution);
            var medium  = CollisionMapMatchAnalyzer.GetMatchConfidence(source.CollisionMap.MediumResolution, target.CollisionMap.MediumResolution);
            var high    = CollisionMapMatchAnalyzer.GetMatchConfidence(source.CollisionMap.HighResolution, target.CollisionMap.HighResolution);
            var highest = CollisionMapMatchAnalyzer.GetMatchConfidence(source.CollisionMap.HighestResolution, target.CollisionMap.HighestResolution);

            var confidence = (0.5 * lowest) + (0.25 * low) + (0.125 * medium) + (0.0625 * high) + (0.03125 * highest);

            if (source.SnakeLength > target.SnakeLength)
            {
                confidence += 0.03125 * (target.SnakeLength / source.SnakeLength);
            }
            else
            {
                confidence += 0.03125 * (source.SnakeLength / target.SnakeLength);
            }

            return(confidence);
        }
Beispiel #6
0
        protected override void OnUpdateFrame(FrameEventArgs e)
        {
            Title = "GameWindowSimple (Vsync: " + VSync.ToString() + ") " + "  FPS: " + (1f / e.Time).ToString("0.");

            // this is called every frame, put game logic here
            if (Capture != null)
            {
                if (_render)
                {
                    if (_captureBuffer.TryDequeue(out _currentProcessedFrame))
                    {
                        _backgroundImage = _currentProcessedFrame.Image;
                    }
                }
            }
            else
            {
                if (!_isInit)
                {
                    _currentProcessedFrame = ProcessFrame(_backgroundImage);
                    _isInit = true;
                }
            }
        }