private void ReportProgress(ProcessedFrame processed) { if (processed.Bitmap != null) { imageBytes = GetByteArrayFromImage(processed.Bitmap); } }
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); }
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); }
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; } } }