// クラス認識
        static クラス recognizeJob( CvMat image )
        {
            // 文字列情報
            CharactersInfo charactersInfo = new CharactersInfo( image );

            // 5字:ソーサラー,ウォリアー,フェンサー
            if ( 5 == charactersInfo.size() )
            {
                int second = charactersInfo.characterImage(1).CountNonZero();
                int last = charactersInfo.characterImage(4).CountNonZero();
                // 第2字と最終文字の輝点数差が3以下なら同一文字があるソーサラーとみなす
                int diff = second - last;
                if ( diff*diff < 3*3 )
                {
                    return クラス.ソーサラー;
                }
                // 最初文字最上段がすべて輝点ならばフェンサー
                int nonzero = charactersInfo.characterImage(0).GetRows(0, 1 ).CountNonZero();
                if ( nonzero == charactersInfo.characterImage(0).Cols )
                    return クラス.フェンサー;

                return クラス.ウォリアー;
            }
            // 4字:スカウト,セスタス
            if ( 4 == charactersInfo.size() )
            {
                int second = charactersInfo.characterImage(1).CountNonZero();
                int last = charactersInfo .characterImage(3).CountNonZero();
                // 第2字と最終文字の輝点数差が3以下なら同一文字があるセスタスとみなす
                int diff = second - last;
                if ( diff*diff < 3*3 )
                {
                    return クラス.セスタス;
                }
                return クラス.スカウト;
            }

            return クラス.不明;
        }
        static int recognizeInteger( CvMat image )
        {
            // 文字列情報
            CharactersInfo charactersInfo = new CharactersInfo(image);

            // 数値認識
            StringBuilder sb = new StringBuilder();
            for ( int n = 0; n < charactersInfo.size(); n++ )
            {
                int a = charactersInfo.getDigit(n);
                sb.Append(a.ToString());
            }

            return int.Parse( sb.ToString() );
        }