没有额外的背景信息,输入中只给出了数字。
我尝试使用如下所述的方法:1,它使用 Tesseract 库来解决旋转问题,但在这种情况下它不能很好地工作,因为在这种情况下没有多行(文本)。
为此,可以假设小数点和“mm”始终存在于输入中。是否有任何其他方法或任何附加功能可以用来解决此问题?
没有额外的背景信息,输入中只给出了数字。
我尝试使用如下所述的方法:1,它使用 Tesseract 库来解决旋转问题,但在这种情况下它不能很好地工作,因为在这种情况下没有多行(文本)。
为此,可以假设小数点和“mm”始终存在于输入中。是否有任何其他方法或任何附加功能可以用来解决此问题?
您可以使用霍夫变换找到图像中的主导线,然后根据霍夫变换的 rho 和 theta 参数对齐文本。首先,您需要通过关闭从图像中删除不必要的细节,如下所示:
binTextImage=TextImage<30;
close=imclose(binTextImage,strel('disk',20));
然后提取边缘,edges=edge(close)>0;
然后应用霍夫变换(正常形式):
H=hough(edges);
imshow(H)
[X Y]=find(max(H(:))==H)
X,Y 位置的 rho 和theta代表主导线的参数。使用 theta 参数找出图像旋转了多少。
在以下链接中给出了 MATLAB 示例中的更多详细信息: https ://www.mathworks.com/help/vision/examples/text-rotation-correction.html
轴对齐边界框的高度达到数字水平对齐的最小值。盒子体积的高度也很容易测量。所以你可以使用这个简单的标准来找到水平对齐的位置。
边界框也足够接近您的形状的凸包。这意味着找到凸包并通过旋转最小化其高度也将起作用。