我正在使用 tess-two 在 android 中使用 tesseract
wrapper 。我已经阅读了有关该库的文档,但我遇到了在我的图像中重新定义正方形的问题。例如,我想识别数独板上最外面的正方形。
有一个example在 opencv
中,但我找不到用于 tesseract
的内容。
最佳答案
Tesseract 是一个 OCR 框架。它对于识别图像中的字符和单词很有用。对于数独板,您有两个主要问题:
- 认识游戏网格的轮廓以及 9 行和列。
- 认识已经填写的数字。
可以通过使用线检测或角点检测算法找到角点或可能的图像边缘来定位数独网格;您应该尝试使用 Google Hough Lines 或 Corner Detection。
如果您以一定角度握持相机,则图像中的网格实际上可能不是正方形,因此您还需要在处理之前将形状转换为正方形。您应该使用 Google Homography。
假设您找到网格并能够将其转换为正方形,您现在可以找到每一行和每一列。此时您可以检查每个单元格,一次检查一个单元格,看看它是空的还是包含数字。如果它包含数字,则需要计算出是哪一位。
现在您可以在最后阶段使用 Tesseract,但它太过分了。您可以自己构建一个简单的模板匹配方法就足够了。
完成上述背景研究后,您将能够选择支持您所需操作的框架或库。 OpenCV 在这个领域是一个非常强大的竞争者,在这里和网络上都有很多对它的支持,但在选择工具来解决它之前,你真的需要更好地理解这个问题。
关于java - Tesseract板检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089821/