Пример #1
0
        private Rect CalculateSquareRect(Mat[] contours)
        {
            if (contours.Length <= 1)
            {
                return(Rect.Empty);
            }

            Array.Sort(contours, (x, y) => y.ContourArea().CompareTo(x.ContourArea()));

            Mat biggestContour = contours[1];

            Mat approx  = new Mat();
            var epsilon = 0.1f * biggestContour.ArcLength(true);

            Cv2.ApproxPolyDP(biggestContour, approx, epsilon, true);

            Rect  approxRect = Cv2.BoundingRect(approx);
            float ar         = approxRect.Width / (float)approxRect.Height;

            Cv2.Rectangle(frame, approxRect, Scalar.Green, 2);

            return(approxRect);
        }