【发布时间】:2020-06-03 14:39:02
【问题描述】:
我正在尝试将包含发票和表格的图像旋转到正确的方向。我试图找到角度,然后旋转图像。只有少数图像被正确旋转。下面是我尝试以正确方向旋转的代码和图像,第一个图像旋转正确,其他图像旋转不正确
import numpy as np
import cv2
import math
from scipy import ndimage
img_before = cv2.imread('rotate_me.png')
cv2.imshow("Before", img_before)
key = cv2.waitKey(0)
img_gray = cv2.cvtColor(img_before, cv2.COLOR_BGR2GRAY)
img_edges = cv2.Canny(img_gray, 100, 100, apertureSize=3)
lines = cv2.HoughLinesP(img_edges, 1, math.pi / 180.0, 100, minLineLength=100, maxLineGap=5)
angles = []
for x1, y1, x2, y2 in lines[0]:
cv2.line(img_before, (x1, y1), (x2, y2), (255, 0, 0), 3)
angle = math.degrees(math.atan2(y2 - y1, x2 - x1))
angles.append(angle)
median_angle = np.median(angles)
img_rotated = ndimage.rotate(img_before, median_angle)
print "Angle is {}".format(median_angle)
cv2.imwrite('rotated.jpg', img_rotated)
第一张图片-[左侧倒置]---旋转后正确旋转 第二张图片--右侧倒置--旋转错误 两个图像都有 -90 度角。最终输出必须像 image3
https://i.stack.imgur.com/XpFVy.png
【问题讨论】:
-
目前您使用的直线角度仅给出 -90,因为角度为 -90 的直线和角度为 90 的直线是相同的。这种方法不适用于 180 度旋转。请描述您的数据集是否有任何共同的徽标或其他文本。请提供有关您的数据集的其他信息。
-
so @RavitejaNarra 大多数数据是发票,其中也可以包含徽标。有些图像没有徽标,有些图像采用表格形式。我拥有不同类型的数据。但所需的方向输出与我附加的图像 3 相同
标签: python opencv image-processing python-imaging-library opencv-contour