Example #1
0
        public static void Run(Window window, Mat thresholdingImage)
        {
            _numberOfFingers = 0;
            Mat drawing = Mat.Zeros(thresholdingImage.Size(), MatType.CV_8UC3);

            Cv2.FindContours(thresholdingImage, out var contours, out var _, RetrievalModes.Tree, ContourApproximationModes.ApproxSimple);
            if (contours.Length > 0)
            {
                var contoursPoly = new Point[contours.Length][];
                for (var i = 0; i < contoursPoly.Length; i++)
                {
                    contoursPoly[i] = new Point[0];
                }

                DrawContours(contours, contoursPoly, drawing);

                _currentClickTime = DateTime.Now;
                if (_numberOfFingers == 2 && (_currentClickTime - _previousClickTime).TotalSeconds > 3 && Program.ControlMode)
                {
                    WinApiUtils.LeftMouseClick(_posX, _posY);
                    _previousClickTime = DateTime.Now;
                }
            }
            drawing.PutText($"Wykryte palce: {_numberOfFingers}, Sterowanie: {(Program.ControlMode ? "TAK" : "NIE")}", new Point(10, 50), HersheyFonts.HersheyPlain, 2, new Scalar(255, 255, 255));
            window.ShowImage(drawing);
        }