计算另一幅图像的旋转角度图像
我正在开发一个处理银行支票的应用程序。 但是,当银行的支票图像可以倾斜或旋转一个最大值20度的角度。 在检查可以处理之前,我需要正确对齐这个倾斜的图像。 我被困在这里。
我最初的想法是,我将首先尝试使用Hough Line Transform在“理想检查图像”中获得直线水平线。 一旦我得到了直线的数量,我将使用相同的技术来检测偏斜图像中的直线。 如果行数小于某个阈值,我会检测到图像偏斜。 以下是我的尝试:
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中有没有什么方法可以说,将“坏”图像叠加在“理想”图像上,并以某种方式计算出它所偏离的角度?
在我的情况下,我会做的是使用与您的模板检查图像匹配的功能在图像内找到检查。 那么你只需要找到从一个到另一个的转换并从中推导出角度。
看看这个OpenCV教程,教你如何做到这一点。
编辑:
事实上,如果你想要的是让银行检查正确的方向,单应性是正确的工具。 无需提取角度。 只需将其应用于图像(或根据您计算的图像反转),并且您应该获得一张美观的图像,以备处理。
链接地址: http://www.djcxy.com/p/67157.html