1

这是我的问题。我有一些简单的图像,其中绿色圆圈内有一些黑色的大数字。问题是它们可以随机旋转。到目前为止,我设法做的是识别绿色圆圈,然后将它们从图像中剪掉,这样我就只剩下数字了。为了把它们拉直,我想用以下方式构造一个旋转的边界矩形:

  • 首先我找到数字的所有轮廓cv::findContours
  • 然后对于每个数字轮廓,我通过函数构造包含数字的最佳拟合旋转矩形cv::minAreaRect

一切都很好,除了 digit 的情况4,它的旋转矩形不与数字对齐,而是略微倾斜,如下图所示:

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

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

4

1 回答 1

0

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

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

于 2019-05-24T17:56:52.713 回答