Ejemplo n.º 1
0
        /// <summary>
        /// Находит углы в изображении шахматной доски, установленном с помощью SetImage
        /// </summary>
        /// <param name="corners">Найденные углы</param>
        /// <returns>Показывает соответствуют-ли найленные углы шаблону CornersPattern</returns>
        public bool FindCorners(out CvPoint2D32f[] corners)
        {
            bool           result;
            int            numCorners;
            ChessboardFlag flags    = ChessboardFlag.AdaptiveThresh | ChessboardFlag.NormalizeImage | ChessboardFlag.FilterQuads;
            CvTermCriteria criteria = new CvTermCriteria(CriteriaType.Iteration | CriteriaType.Epsilon, MaxIterations, Epsilon);

            // Находим углы
            result = chessBoard.FindChessboardCorners(CornersPattern, out corners, out numCorners, flags);

            // Уточнаем положение углов
            chessBoard.CvtColor(grayChessBoard, ColorConversion.RgbToGray);
            grayChessBoard.FindCornerSubPix(corners, corners.Length, new CvSize(11, 11), new CvSize(-1, -1), criteria);

            return(result);
        }