【问题标题】:Rotating the images to straight orientation将图像旋转到直线方向
【发布时间】:2021-11-22 23:48:30
【问题描述】:

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

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

60_degree_image120_degree_image240_degree_image 330_degree_image

我希望以上 4 幅图像的输出图像都与下面的相同 图片:

desired_output_of_all_4_images

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

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

这是我的交叉检查代码:

Please_click_this_link_for_the_code

【问题讨论】:

  • 直接在此处发布您的代码,而不是链接到它
  • 我建议您将白色收据从背景中裁剪出来,并将外部设为白色。然后使用 FFT 处理得到方位角并据此直线旋转图像。请参阅pyimagesearch.com/2017/02/20/text-skew-correction-opencv-python 您必须使用 OCR 来确定文本是正面朝上还是正面朝下。
  • 感谢@fmw42 的评论。我会解决您提供的可能解决方案并让您知道。
  • 请提供足够的代码,以便其他人更好地理解或重现问题。
  • 您好@fmw42,我只是尝试使用您在本文中提到的答案中的代码旋转图像:stackoverflow.com/questions/59450102/…,但我没有成功,输出图像与输入图像。你能帮帮我吗?现在,我只需要帮助拉直图像,不管图像是完全正确的还是翻转的。

标签: python opencv cv2 image-rotation


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 也许,但没有图像库能够神奇地找出图像的“正确方法”是什么而不被告知。
猜你喜欢
  • 2019-11-27
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
相关资源
最近更新 更多