Warning: session_start(): open(/var/lib/php/sessions/sess_eje7v9guajb1s7b9k8sq64ie13, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
// type parameter is rect + FEN
sclass ChessOCR_TwoStageRecognizer extends SteppableAndBest> {
replace Segmenter with IF1>.
// input
BufferedImage inputImage;
Iterator extends Segmenter> segmenterStream;
ChessPieceRecognizer pieceRecognizer;
bool verbose;
// internal
L rectQueue = new LinkedList;
new Set rectsTried;
*() {}
*(ChessPieceRecognizer *pieceRecognizer, BufferedImage *inputImage, Iterator extends Segmenter> *segmenterStream) {}
public bool step() {
if (nempty(rectQueue))
ret true with tryRect(popFirst(rectQueue));
if (segmenterStream.hasNext()) {
Segmenter seg = segmenterStream.next();
if (seg == null) true;
L rects = seg.get(inputImage);
addAll(rectQueue, rects);
if (verbose) print("Segmenter " + seg + " returned: " + rects);
true;
}
false;
}
void tryRect(Rect r) {
r = rectSetHeightToWidth(r); // square it
if (!rectsTried.add(r)) ret; // seen
BufferedImage board = clipBufferedImage(inputImage, r);
S fen, double score = unpair chessOCR_recognizeBoard_FENAndScore(board, pieceRecognizer);
if (verbose) print("Score " + score + " for rect: " + r);
best.put(pair(r, fen), score);
}
void verbose(bool verbose) {
best.verboseNewBest = this.verbose = verbose;
}
Rect bestBoardLocation() { ret pairA(best!); }
}