首页 > 解决方案 > 将图像旋转到直线方向

问题描述

我一直在尝试旋转不同角度的超市账单图像以使其变直,但这样做时遇到了问题。我尝试了以下旋转方式,但问题是图像仅旋转到最近的可能轴。我的意思是如果方向角度在 0 到 90 度之间,那么图像将旋转到 0 度(直线)。如果定向角度在 90 到 180 度之间,则图像被旋转到 90 度。如果在 180 和 270 之间,则旋转到 180,如果在 270 和 360 之间,则旋转到 270 度。

以下是图像方向的一些不同可能性:

60_degree_image 120_degree_image 240_degree_image 330_degree_image

我希望以上 4 个图像的输出图像与下面的直图像相同:

desired_output_of_all_4_images

PS:我不想在代码中手动输入旋转度数,但不知何故,代码必须能够自行旋转到所需的输出。上述方法是基于文本方向的,考虑到所有文本都处于相同的方向。

非常感谢任何其他可能的方式和任何帮助。谢谢!

这是我的交叉检查代码:

Please_click_this_link_for_the_code

标签: pythonopencvcv2image-rotation

解决方案


基本上,你有两种可能性。

如果您知道您的输入格式是纵向的(高而不是宽),您可以继续旋转直到获得纵向输出格式。当你得到它时,也旋转 180 度并保持两个:其中一个将倒置。提取一个保证其中包含文本的小区域(例如中间 200 像素)并 ocr 两个样本:其中一个将具有不成比例的更多单词:这是正确的方向;返回此格式。

如果你知道你的输入格式是纵向的,你必须用四种可能性来做这件事,每次都取一个样本,然后返回一个命中次数最多的那个。

即使您不打算对最终图像进行 OCR,OCR 仍然是确定文本是否正确的最快、最可靠的方法。

我没有提供任何代码,因为这(恕我直言)更多的是算法问题而不是直接编程问题。


推荐阅读