【发布时间】:2016-10-19 01:25:00
【问题描述】:
我正在开发一个处理银行支票的应用程序。但是当银行的支票图像可以倾斜或轻微旋转最大值 20 度的角度时。在处理支票之前,我需要正确对齐这个倾斜的图像。我被困在这里了。
我最初的想法是,我将首先尝试在“理想检查图像”中使用霍夫线变换获得水平直线。一旦我得到直线的数量,我将使用相同的技术来检测倾斜图像中的直线。如果行数小于某个阈值,我会将图像检测为倾斜。以下是我的尝试:
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,50)
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,1000,100)
if len(lines[0]) > 2:
#image is mostly properly aligned
else:
#rotate it by some amount to align it
但是,这让我无法找到倾斜的角度。如果我能找到角度,我可以执行以下操作:
#say it is off by +20 degrees
deg = 20
M = cv2.getRotationMatrix2D(center, -deg, 1.0)
rotated = cv2.warpAffine(image, M, (w, h))
然后我想到使用标量积来获取旋转角度。但是,使用哪两个元素的标量积?我无法通过“理想”支票中的坐标从“坏”支票中获取元素,因为它的内容是倾斜的。那么,openCV 中是否有任何方法可以让我将“坏”图像叠加在“理想”图像上并以某种方式计算它偏离的角度?
【问题讨论】:
标签: python opencv image-processing