The Absurdity of Modern Life: Facebook claims trademark on "Book"
…and “Wall”…and “Poke”. And don’t forget “Face”. And the letter ‘F’
…and “Wall”…and “Poke”. And don’t forget “Face”. And the letter ‘F’
I’ve got the basics working. When I play Zoom Poker, Poker Copilot promptly identifies about 50% of the players correctly. The basic components are in place, but all need to be improved, tightened up, and tidied up. The biggest problem is the letter k – I’ll need to tune my code to handle this better.
My ScreenScraping Teaching tool I’m using to create the Poker Copilot Zoom Poker HUD shows an image on screen and what character it thinks that image contains. I tell the Teaching tool if the character is correct or not.
Problem is, I can’t tell whether it thinks an image is an upper case 0 or the number 0. I can’t tell if it thinks a letter is an upper case i (l) or a lower case L (l).
So I’ve created a small Java class which will give me a textual description of a character. Now it will tell me that l is either:
UPPERCASE LETTER I
or
LOWERCASE LETTER L
It will tell me that 0 is
UPPERCASE LETTER O
or
DECIMAL DIGIT NUMBER 0
The Java class is called Characters, and the source code follows:
public class Characters {
public static String getDescription(char ch) {
return CharacterType.getDescription(ch);
}
private static enum CharacterType {
UNASSIGNED,
UPPERCASE_LETTER,
LOWERCASE_LETTER,
TITLECASE_LETTER,
MODIFIER_LETTER,
OTHER_LETTER,
NON_SPACING_MARK,
ENCLOSING_MARK,
COMBINING_SPACING_MARK,
DECIMAL_DIGIT_NUMBER,
LETTER_NUMBER,
OTHER_NUMBER,
SPACE_SEPARATOR,
LINE_SEPARATOR,
PARAGRAPH_SEPARATOR,
CONTROL,
FORMAT,
NOT_USED,
PRIVATE_USE,
SURROGATE,
DASH_PUNCTUATION,
START_PUNCTUATION,
END_PUNCTUATION,
CONNECTOR_PUNCTUATION,
OTHER_PUNCTUATION,
MATH_SYMBOL,
CURRENCY_SYMBOL,
MODIFIER_SYMBOL,
OTHER_SYMBOL,
INITIAL_QUOTE_PUNCTUATION,
FINAL_QUOTE_PUNCTUATION;
private static String getDescription(final int c) {
final int type = Character.getType(c);
final CharacterType characterType = CharacterType.values()[type];
return characterType.toString().replace('_', ' ') + ' ' + (char) Character.toUpperCase(c);
}
}
}
Some sample usage:
System.out.println(Characters.getDescription('O'));
System.out.println(Characters.getDescription('0'));
In order to get Poker Copilot’s HUD working with PokerStars Zoom Poker, I need to know what symbols are acceptable for PokerStars. This a valid PokerStars screen name: ÀÁÂÃÄÅÆ
Now that’s going to be hard to determine purely via naïve screen scraping. Wish me luck.
Here’s another valid name: þ o k e r Ð
That name includes two icelandic letters, and five spaces. Incidentally, Iceland abolished the letter z in 1973. Things you learn from Wikipedia…
On Sunday PokerStars released Zoom Poker. It seems to be equivalent to the late Full Tilt Poker’s Rush Poker.
I’m having a go at making a working HUD for Zoom Poker. Fortunately I went a long way down this path for an experimental Rush Poker HUD back in the day. So a lot of my necessary learning is already done, as is a semi-working solution.
Every hand in Zoom Poker is with a different set of opponents, so Poker Copilot’s approach of determining who is at the table from the hand history after a hand does’t work here. After ruling out other possible approaches, it seems clear to me that I need to use screen scraping.
To make the problem easier to solve, I’m setting some strict constraints at first: 9-player tables, using any of the “Nova” table themes, on one table, with the table made as big as PokerStars allows (1320 pixels by 932 pixels). Once I get that working satisfactorily here in the lab, I’ll make it available for eager testers, to weed out problems. Then once that is working, I can look at removing the constraints one at a time.
After two days’ work, I’ve got parts of the solution in place. In the following screenshot you can see some of the workings: in real-time, Poker Copilot is grabbing the player names in image form, then converting each image to a binary image via a technique called thresholding.
A further process trims each binary image, then separates the image into free-standing images of individual characters as much as possible. I intend to build up up a repository of as many images as possible so that I can “teach” Poker Copilot which image is equivalent to which character (or characters).
Here’s a glimpse of the tool I created to “teach” Poker Copilot about the letters. You can see the whole player name, the individual letters, and the third column where I manually tell Poker Copilot which letter is represented.
If any brilliant researchers into screen scraping and character recognition are reading this, please do send me links to any helpful documents in this area that I can use…
Poker Copilot 3.05 is now available to download.
The major improvements are “Zoom Poker” support (although not in the HUD yet), and the addition of the “unopened preflop raise” statistic. There are some bug fixes for obscure situations – thanks to people who dutifully send crash reports because they allow me to find and fix these problems.
What’s changed:
What’s fixed:
Update Instructions:
Now you are done and ready to hit the tables.
Loyal Poker Copilot customer Fabrizio pointed out that filtering by table size doesn’t work with Ongame Network hands. This is indeed the case. My answer to Fabrizio, and all others affected by this:
Ongame Network hand history files don’t contain information about the table size. Therefore Poker Copilot can’t tell the table size, and sets all Ongame Network rooms at 10 players.
You should write to your Ongame Network software’s support email asking them to add this information to the hand history file.
Hopefully if enough people ask, they’ll do something about it.
The Poker Copilot User Guide was horribly out of date. There is now a new PDF user guide, updated for Poker Copilot 3. You can download it from our support page. It is currently only available as a PDF. I’m hoping to get motivated to do the drudge work of converting it to HTML real soon now.
Unopened PFR is a measure of how often you raise preflop all the players before you either checked or folded.
I want to make this identical in calculation with Hold’em Manager. So a question for my customers who also have Windows and HEM: should the denominator be the number of hands you’ve played? Or the number of times you had an opportunity to make an unopened preflop raise? The latter seems more logical to me.
Poker Copilot 3.04 is now available to download.
What’s changed:
What’s fixed:
Update Instructions:
Now you are done and ready to hit the tables.