2009-08-14 5 views
13

Я решил сделать проект для развлечения, где я хочу взять в качестве изображения изображение игровой карты и вернуть свой ранг и костюм. Я полагаю, что мне нужно только взглянуть на верхний левый угол, так как у него есть вся информация. Он должен быть надежным - если у меня есть большой образ Ace of Diamonds, я должен иметь возможность масштабировать его от 20 до 200% и все равно получить правильный ответ.OCR Playing Cards

Первый вопрос - есть ли что-нибудь уже написанное, которое делает это? Если так, я найду что-то еще для OCR, чтобы не дублировать усилия.

Во-вторых - как лучше всего это сделать? Нейронная сеть? Что-то ручное? Может ли кто-нибудь дать какие-либо указания? (0xCAAF9452 не является приемлемым ответом).

+11

Как насчет 0xCAAF9460? – MitMaro

+0

вы получите комментарий upvote – 2009-08-14 19:55:28

+2

Похоже, вы делаете бот-покер, не делая интеллектуальных упражнений. –

ответ

2

Отъезд http://d-touch.org/, вам придется создавать свои собственные игровые карты.

Вы также можете быть заинтересованы в ocropus.

+0

вы принимаете это противоположным образом - мне даются игральные карты, и я должен их распознать, я не должен деизировать игровые карты OCR-abe =) – 2009-08-14 20:42:18

3

Я не думаю, что есть что-то уже написанное для того, что вы пытаетесь выполнить (по крайней мере, с открытым исходным кодом и на Python).

Что касается вашего второго вопроса, это зависит от того, что вы пытаетесь распознать. Если входы могут поступать из разных источников - например, разных марок игральных карт с особыми стилями, то вам, вероятно, следует использовать компьютерный метод обучения (такой как нейронная сеть или поддерживающая векторная машина [SVM]), чтобы позволить ему узнать, как распознавать неизвестные входы. Однако, если вход всегда один и тот же по форме или стилю, то достаточно простого алгоритма сравнения изображений (например, сравните пиксели нарезанного верхнего левого угла с пикселями каждого ранга).

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

Есть игрушка OCR пример here что вы можете найти интересно. В lib, который используется (LibSVM), также есть версия Python, которую я использовал, и нашел, что очень просто работать.

Надеюсь, это поможет.

1

Это не так надежно, но вы можете посмотреть на цвета 3 или 4 места на карте, чтобы, если они белые или если они цвета, вы можете определить, какая карта и подходит ли она. Очевидно, что это не сработает, если у вас не всегда одинаковые карты.

1

Лично я бы отправился на путь обучения машины с этим.

+0

Зачем вам нужно машинное обучение, когда проблема такая конкретная? –

+3

Возможно, я неправильно понял проблему, но OP фотографирует карты и пытается правильно определить их ранг и костюм? – DevDevDev

+0

Согласен. Вы получаете компенсацию, чтобы компенсировать остальные:). –

1

Учитывая ограниченный размер выборки (4 масти, 13 различных значений) Я просто стараюсь соответствовать эталонное изображение костюма и значение с новым входным изображением. Сначала найдите ограничивающий прямоугольник входящего костюма/значения (самый маленький ящик, охватывающий все не белые пиксели), масштабируйте ваши ссылочные изображения в соответствии с размером этого ограничивающего прямоугольника и найдите лучшее «совпадение» через абсолютную разницу по пикселям. Цвет изображения (т. Е. Красный или черный) сделает это еще проще.

4
+0

спасибо за ссылку! – 2009-08-17 20:46:24

+0

+1 OpenCV, безусловно, обеспечивает хороший инструментарий. – kenny

 Смежные вопросы

  • Нет связанных вопросов^_^