Eine Webcam in Kombination mit selbstprogrammierter OpenCV-Anwendung macht aus einem Laptop einen Schachcomputer der die Züge seines Gegners erkennt und seine eigenen Züge über eine Sprachausgabe bekannt gibt.
Zutaten
- Schachbrett mit Figuren
- Kamera oder Webcam auf Stativ
- Notebook
Video
Beschreibung
Nicht immer ist ein passender Schachpartner in der Nähe und manchmal ist für eine gute Schachpartie auch einfach die Tages- oder Nachtzeit nicht kompatibel. Schachcomputer und Online-Schach sind Alternativen. Aber natürlich war der Grund für mein Projekt ein anderer, nämlich einfach: "Geht das oder geht das nicht?"
Die Aufgabenstellung: Baue Dir einen Schachcomputer mit einem ganz normalen Spielbrett, einer Kamera und einem Computer. Eine Webcam über dem Brett erkennt die Stellung der schwarzen und weißen Figuren und antwortet auf Züge mit einem Gegenzug per Sprachausgabe.
Die notwendigen Tondaten (2x8 WAV-Dateien für die Felder und weitere fünf Dateien für die Figuren) waren schnell aufgesprochen.
Sobald ein Zug ausgeführt ist, nimmt die über dem Brett installierte Kamera ein Foto auf. Der PC analysiert das Bild und übergibt die jeweils neu erkannte Stellung per "Universal Chess Interface" (UCI) Syntax an eine Schachengine. Diese errechnet dann den Gegenzug, übermittelt ihn ans Hauptprogramm zurück, welche diesen über eine Sprachausgabe bekannt gibt. Der Computerzug wird dann vom menschlichen Spieler auf dem realen Brett ausgeführt.
Die in C++ geschriebene ChessCam-Software beherrscht sowohl Rochaden als auch das Schlagen "en passant" sowie die Bauernumwandlung. Daneben protokolliert sie sämtliche Spielzüge in einer PGN-Datei (Portable Game Notation) und informiert den Spieler, wenn eine der wichtigeren, namentlich bekannten Spieleröffnungen erkannt wurde. Die Bilderkennung selbst basiert auf dem freien Sofwarepaket "OpenCV". Als Schachengine kann prinzipiell jede UCI-fähige Software dienen. Für den Praxistest kam die freie Engine "Fruit" zum Einsatz.
Zu diesem Projekt gibt es auch eine eigene Webseite.