OCR扑克牌

时间:2009-08-14 19:35:47

标签: python artificial-intelligence ocr computer-vision

我决定做一个有趣的项目,我想把扑克牌的形象作为输入并返回其等级和套装。我想我只需要看左上角,因为那里有所有的信息。它应该是健壮的 - 如果我有一张Ace of Diamonds的大图像,我应该能够将它从20%扩展到200%,并且仍能得到正确答案。

第一个问题 - 有什么东西已经写好了吗?如果是这样,我会找到OCR的其他内容,所以我不会重复这些努力。

第二 - 这是最好的方法吗?神经网络?手写的东西?任何人都可以提供任何指示吗? (0xCAAF9452不是可接受的答案)。

4 个答案:

答案 0 :(得分:3)

我认为已经有一些东西已经写好了你想要完成的东西(至少是开源和Python)。

关于你的第二个问题,这取决于你想要识别的内容。如果输入可以来自不同的来源 - 例如,具有独特风格的不同品牌的扑克牌 - 那么您应该使用基于机器学习的算法(例如神经网络或支持向量机) [SVM]),以便让它学习如何识别未知输入。但是,如果输入在形状或样式上始终相同,则简单的图像比较算法就足够了(例如,将切片的左上角的像素与每个等级的像素进行比较)。

如果您决定使用基于机器学习的算法,我也认为您不需要非常复杂的功能,因为套装和等级在形状或风格上的变化并不是很大,你应该没问题只使用左上角的像素作为特征。

您可能会觉得有趣的玩具OCR示例 here 。使用的lib(LibSVM)也有一个Python版本,我已经使用过,发现它非常简单。

希望它有所帮助。

答案 1 :(得分:1)

它不那么强大,但你可以看看卡上3或4个位置的颜色,这样如果它们是白色或者它们是一种颜色,你就可以确定哪张卡适合它。显然,如果你不总是拥有相同的牌,这将无效。

答案 2 :(得分:1)

就个人而言,我会选择这个机器学习路线。

答案 3 :(得分:1)

鉴于样本量有限(4个套装,13个不同的值),我只是尝试将套装和价值的参考图像与新的输入图像相匹配。首先找到传入套装/值的边界框(包围所有非白色像素的最小框),缩放参考图片以匹配该边界框的大小,并通过像素方式的绝对差异找到最佳“匹配”。图片的颜色(即红色或黑色)将使这更容易。