На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Создание помощника в преферанс. Этап первый: план разработки


Список статей цикла:
  1. Этап первый: план разработки
  2. Этап второй: распознавание достоинства
  3. Этап третий: распознавание масти

Недавно закончил очень интересный проект, с подобным ему до сих пор я еще не сталкивался. Задача состояла в том, чтобы сделать помощник игры в карты (конкретно - в преферанс), который бы мог запоминать вышедшие карты. Причем делать это не так, как в моей программе "Карточный помощник" - отправлять их в бой после клика, а самостоятельно. То есть приложение должно было в режиме онлайн распознавать достоинство и масть, а затем выводить их на экран. И не просто выводить, а обрабатывать. На основе решения этой задачи я, пожалуй, напишу несколько материалов. Этот первый, вводный.

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

Однако, в нашем случае сложность уменьшается: нам требуется заставить работать приложение только на одном компьютере, с одним разрешением экрана и одним и тем же расположением карт. Поэтому мы можем однозначно выделить после создания скриншота экрана участки, которые надо будет обработать. Как уже говорилось, распознавание символов - это распространенная задача, и решения её уже есть. Я остановил взгляд на tessnet2 - не самом новом, но одном из самых простых и эффективных распознавателей на сегодня, с которыми можно работать и на языке C#. Забегая вперед скажу, что выбор был удачным - число распознаваний удалось довести до 100% (!) - если кто не в курсе, это результат практически недосягаемый в обычных условиях. Правда, у нас условия были не совсем обычными - мы могли немного менять колоду, это существенно облегчило работу. Активно помогал в работе и сам заказчик.

В распознавании масти я сначала пошел долгим путем: начал создавать правила, с помощью которых можно было определить геометрическую фигуру. Брал цвет точек в разных местах, создавал алгоритмы. Но вскоре пришло в голову решение проще: самому немного изменить цвет. Пики стали немного светлее, а черви - немного ярче. Здесь нам опять же очень упростила задачу возможность работать с колодой.

Таким образом, после разбиения задачи на три подзадачи, все оказалось не так уж и сложно. В следующих статьях я выложу отдельные ключевые фрагменты кода по распознаванию и других частей программы.




тегистатьи IT, распознавание, карты, преферанс





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 6. Арифметические операторы C#
Роман "Работа во сне": Глава №1


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.