Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用OpenCV 3和Tesseract/模板匹配识别图像中的旋转数字?_C++_Opencv_Ocr_Tesseract - Fatal编程技术网

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

C++ 如何使用OpenCV 3和Tesseract/模板匹配识别图像中的旋转数字?,c++,opencv,ocr,tesseract,C++,Opencv,Ocr,Tesseract,这是我的问题。我有一些简单的图像,在绿色圆圈内有一些黑色的大数字。问题是它们可以随机旋转。到目前为止,我所做的是识别绿色圆圈,然后从图像中剪切它们,这样我就只得到了数字。 为了拉直它们,我想用以下方式构造一个旋转的边界矩形: 首先,我用cv::findContours 然后,对于每个数字轮廓,我通过函数cv::minareact 一切正常,除了数字4,其旋转矩形与数字不对齐,但略微倾斜,如下图所示: 我也试着用一个合适的椭圆,但它也倾斜了。我能想到的唯一解决方案是使用模板匹配,提供本身也

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

  • 首先,我用
    cv::findContours
  • 然后,对于每个数字轮廓,我通过函数
    cv::minareact
一切正常,除了数字
4
,其旋转矩形与数字不对齐,但略微倾斜,如下图所示:


我也试着用一个合适的椭圆,但它也倾斜了。我能想到的唯一解决方案是使用模板匹配,提供本身也可以旋转的模板

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


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

如果数字的字体一致,如果可以隔离圆,并且圆的大小(或可以被制作成)一致,然后,您可能能够完全绕过Tesseract,代价是为各种旋转中的所有数字构造模板

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