// クラス認識 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() ); }