11

我决定做一个有趣的项目,我想将扑克牌的图像作为输入并返回其等级和花色。我认为我只需要查看左上角,因为它包含所有信息。它应该是健壮的——如果我有一张钻石王牌的大图像,我应该能够将它缩放到 20% 到 200% 的任何位置,并且仍然得到正确的答案。

第一个问题 - 是否有任何已经写过的东西可以做到这一点?如果是这样,我会为 OCR 找到其他东西,所以我不会重复这些努力。

第二 - 这样做的最佳方法是什么?神经网络?手工编码的东西?任何人都可以提供任何指示吗?(0xCAAF9452 不是可接受的答案)。

4

4 回答 4

3

我不认为已经为您要完成的工作编写了一些东西(至少是开源和 Python 中的)。

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

如果你决定使用基于机器学习的算法,我也认为你不需要非常复杂的特征,因为西装和军衔在形状或风格上并没有太大的变化,你应该只使用左上角的像素作为特征。

这里有一个玩具 OCR 示例,您可能会觉得有趣。使用的库(LibSVM)也有一个 Python 版本,我使用过,发现使用起来非常简单。

希望能帮助到你。

于 2009-08-14T21:28:24.120 回答
1

它没有那么健壮,但是您可以查看卡片上 3 或 4 个位置的颜色,以便它们是白色还是颜色,您可以确定它是哪张卡片和适合它。显然,如果您不总是拥有相同的卡,这将不起作用。

于 2009-08-15T00:38:49.457 回答
1

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

于 2009-08-15T00:48:00.100 回答
1

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

于 2009-08-17T14:41:17.643 回答