11
votes

Cartes à jouer OCR

J'ai décidé de faire un projet pour le plaisir où je veux prendre comme entrée l'image d'une carte à jouer et retourner son rang et son costume. Je pense que je n'ai besoin que de regarder dans le coin supérieur gauche, car cela a toutes les informations. Il devrait être robuste - si j'ai une image importante d'un as de diamants, je devrais être capable de l'amplifier de 20 à 200% et d'obtenir la bonne réponse.

première question - y a-t-il déjà déjà écrit cela? Si oui, je vais trouver quelque chose d'autre à OCR, donc je ne fais pas dupliquer les efforts.

second - quelle est la meilleure façon de faire cela? Réseau neuronal? Quelque chose de codé à la main? Quelqu'un peut-il donner des pointeurs? (0xCaaf9452 n'est pas une réponse acceptable).


4 commentaires

Que diriez-vous de 0xCaaf9460?


On dirait que vous faites un bot de poker, ne faisant pas d'exercice intellectuel.


Nah Poker Bots ne peut pas faire de l'argent. Je ne suis pas si stupide =).


Prévoyez-vous de reconnaître une carte d'une capture d'écran ou envisagez-vous de reconnaître une carte d'une photo prise d'une carte réelle?


4 Réponses :


3
votes

Je ne pense pas qu'il y ait déjà déjà écrit pour ce que vous essayez d'accomplir (au moins open source et en python).

Quant à votre deuxième question, cela dépend de ce que vous essayez de reconnaître. Si les entrées peuvent provenir de sources différentes - par exemple, différentes marques de cartes à jouer avec des styles distinctifs -, vous devriez probablement utiliser un algorithme d'apprentissage de machine (tel que le réseau neural ou la machine de vecteur de support [SVM]), afin de le laisser apprendre à reconnaître les intrants inconnus. Toutefois, si l'entrée est toujours la même forme de forme ou de style, un simple algorithme de comparaison d'image suffira (par exemple, comparera les pixels du coin supérieur gauche tranchés avec les pixels de chaque rang).

Si vous décidez d'utiliser un algorithme à base d'apprentissage automatique, je pense également que vous n'avez pas besoin de fonctionnalités très complexes, car les costumes et les rangs ne varient pas vraiment de la forme ou du style, et que vous devriez aller bien avec uniquement les pixels du coin supérieur gauche comme caractéristiques.

Il y a un exemple de jouet OCR Exemple ici que vous pouvez trouver intéressant. La lib qui est utilisée (libsvm) a également une version Python que j'ai utilisée et trouvé très simple à travailler avec.

espère que cela aide.


0 commentaires

1
votes

Ce n'est pas aussi robuste, mais vous pouvez regarder les couleurs de 3 ou 4 emplacements sur la carte de sorte que s'ils soient blancs ou s'ils sont de couleur, vous pouvez déterminer quelle carte et conviennent. Évidemment, cela ne fonctionnera pas si vous n'avez pas toujours les mêmes cartes.


0 commentaires

1
votes

Personnellement, j'irais la route d'apprentissage de la machine avec celui-ci.


2 commentaires

Pourquoi auriez-vous besoin d'apprendre une machine lorsque le problème est si précis?


J'ai peut-être mal compris le problème, mais l'OP prend des images photographiques de cartes et essayant de déduire leur rang et de fonctionner correctement?



1
votes

Compte tenu de la taille de l'échantillon limitée (4 costumes, 13 valeurs différentes) Je voudrais juste essayer de faire correspondre une image de référence de la combinaison et de la valeur avec une nouvelle image d'entrée. Premièrement, recherchez la boîte de sélection du costume / valeur entrante (la plus petite boîte enfermant tous les pixels non blancs), ce qui permet de mettre en correspondance la taille de cette boîte de sélection et de trouver le meilleur "match" via la différence absolue de pixels. La couleur de l'image (c'est-à-dire rouge ou noir) rendra cela encore plus facile.


0 commentaires