如何使用OpenCV 3和Tesseract /模板匹配识别图像中的旋转数字?

时间:2019-05-24 12:36:20

标签: c++ opencv ocr tesseract

这是我的问题。我有一些简单的图像,其中绿色圆圈内有一些大的黑色数字。问题在于它们可以随机旋转。到目前为止,我设法做到的是识别绿色圆圈,然后从图像中将其剪下,这样我最后只得到了数字。 为了使它们更整齐,我认为可以通过以下方式构造一个旋转的边界矩形:

  • 首先我用cv::findContours找到数字的所有轮廓
  • 然后为每个数字轮廓创建一个最合适的旋转矩形,该矩形通过函数cv::minAreaRect包含数字

一切正常,除了数字4的情况之外,数字{{1}}的旋转矩形与数字不对齐而是稍微倾斜,如下图所示:

https://imgur.com/O03Iw8l.png https://imgur.com/8dAntZ0.png https://imgur.com/XaWYSY5.png

我也尝试使用合适的椭圆,但是那也是倾斜的。我能想到的唯一解决方案是使用模板匹配,同时提供自身旋转的模板。

1 个答案:

答案 0 :(得分:0)

如果数字的字体是一致的,并且您可以隔离圆,并且它们是(或可以做成)统一的大小,那么您也许可以完全绕开Tesseract,而以构建为代价旋转所有数字的模板。

假设应用模板会在+/- 2°范围内给出一个不错的信号,那就是(360/5)* 10 = 720个模板,覆盖0-9。将应用这些模板的成本与Tesseract调用的成本进行基准比较很有趣。