@lexxand

Насколько сложно написать приложение с распознаванием шахматных фигур?

Я люблю шахматы, и думаю как и многие люблю играть на настоящей доске.
Есть классный продукт Square off pro - шахматная доска, которая может коннектиться к lichess, подсвечивать на доске ходы соперника, и вводить ходы когда делаешь их сам. Получается играешь на настоящей доске, но с соперниками с lichess. Вот как выглядит

Насколько сложно сделать такое приложение на Android? Приложение на телефоне, камера которого направлена на доску, и функционал приложения - это
распознавать собственные ходы, и по API lichess отправлять на сервер в игру.

Может есть какие-то библиотеки уже готовые, или наработки в этом направлении?
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ответы на вопрос 2
trapwalker
@trapwalker
Программист, энтузиаст
Если вы так ставите вопрос, то для вас действительно будет сложно сделать качественно распознающий доску продукт.
Вообще, полагаю, без очень хорошего опыта в использовании сверточный нейронных сетей и вообще в распознавании образов в эту задачу можно сунуться только из академических интересов. Сделать достаточно хороший продукт будет не просто.
Тем более, что шахматы у всех могут быть немного разные, условия освещения, ракурсы, подвижность камеры...
Любое новшество должно решать больше проблем. чем создавать, а чтобы такое приложение было полезным нужно очень сильно заморочиться вычесывая баги и специфические ситуации.

Моно попробовать компромиссный вариант. Если отказаться от чтения произвольной ситуации на доске. а попробовать следить за доской со статической камеры от начала матча, то тут можно многое упростить.
Вам не придётся распознавать форму фигур с рахных ракурсов, достаточно просто отслеживать занятые клетки доски и ее эволюию между ходами. Зная правила, начальное состояние и видя изображения двцх состояний доски до и после хода можно (вроде бы) однозначно определить какой именно был сделан ход и какое теперь новое состояние.
В этом случае тоже не просто будет вычесать все баги, но тут уже гораздо проще научить opencv находить габариты доски, выпрямлять перспективные искажения и понимать какие клетки заняты. а какие свободны.
Моно сделать звуком со стороны программы просьбы убрать руки от доски или вернуть последний ход, если что-то помешало камере сделать кадры между ходами и прога потеряла нить.

Начал бы я именно с такого MVP, если бы приспичило такое делать.
С другой стороны, если хочется что-то замутить эдакое, то лучше сделать прикольную доску, которая могла бы переставлять шахматы.
Реализовать такое можно установив под доску координатный стол с электромагнитом на каретке, как в ЧПУ-фрезере и матрицу датчиков холла -- под каждую клетку по датчику, а в фигуры вклеить обычные магниты.
Будет продольная каретка, поперечная каретка, электромагнит (или бычный мощный неодимовый, отодвигаемй сервомотором).
Датчик холла под кажой клеткой даст понять какие клетки заняты. За ходами можно следить по тому, на каких клетках пропадали и появлялись фигуры. Передивгать фигуры можно двигая каретку с магнитом и перетаскивая так фигуры по доске. Придётся заморочиться, чтобы корректно раздвигать фигуры для протягивания коня и для выведения битых фигур с поля. Но выглядеть при должной реализации будет завораживающе волшебно.
Ответ написан
Распознавать положение и ход через камеру можно, с довольно хорошей надёжностью – т.к. положения фигур дискретны, из предыдущего положение кол-во возможных ходов лимитировано.

Но польза от этой реализации – только до 50%. Т.к. ответные ходы сопреника никак не взаимодействуют с доской – надо читать ответный ход и самому переставлять фигуру соперника. Есть ещё и возможность при этом ошибиться. И тратить на это время (а если блиц, последние секунды?)

Здорово было бы сделать доску с фигурами, приспособленную для дистанционной игры. OpenSource – чтобы коннектилась по BlueTooth и далее работала с любыми приложениями. С открытым API. : )

От неё требуется по минимуму – распознавать, какая фигура где стоит; и подсвечивать клетки – ошибки, или откуда-куда пошёл соперник.

По максимуму – механизация перемещения фигур. Но и это не решит обмен пешки на ферзя или другую, например. Если только не сделать площадь крупнее игрового поля – с «парковкой» для взятых и запасных фигур. (А если понадобится 8 белых ферзей?! : )
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы