2024-04-29 10:49:10 发布
网友
我正在进行OCR任务,从多个身份证明文档中提取信息。一个挑战是扫描图像的方向。需要确定扫描图像的方向,如PAN、Aadhaar、驾驶执照或任何身份证明。在
已经在Stackoverflow和其他论坛上尝试过所有建议的方法,如OpenCV minarerect、Hough Lines Transforms、FFT、单应性、带有psm0的tesseract osd。都没用。在
逻辑应该返回文本方向的角度-0、90和270度。附件是0度、90度和270度的图像。{a1}不是关于确定倾斜
这里有一个基于这样一个假设的方法,即大部分文本都偏向一边。我们可以根据主文本区域的位置来确定角度
在对图像进行灰度化和高斯模糊化处理后,采用自适应阈值法得到二值图像
从这里我们找到轮廓,并利用轮廓区域进行滤波,去除小噪声粒子和大边界。我们画出任何通过这个过滤器到掩模上的轮廓
为了确定角度,我们根据图像的尺寸将图像分成两半。如果width > height那么它必须是一个水平图像,所以我们垂直分割成两部分。如果height > width那么它必须是一个垂直的图像,所以我们水平地分成两半
width > height
height > width
现在我们有了两个一半,我们可以使用cv2.countNonZero()来确定每一半上的白色像素量。以下是确定角度的逻辑:
cv2.countNonZero()
if horizontal if left >= right degree -> 0 else degree -> 180 if vertical if top >= bottom degree -> 270 else degree -> 90
left 9703right 3975
left 9703
right 3975
因此图像为0度。这是其他方向的结果
left 3975right 9703
left 3975
right 9703
我们可以断定图像被翻转了180度
下面是垂直图像的结果。注意,因为这是一个垂直的图像,所以我们水平分割
top 3947bottom 9550
top 3947
bottom 9550
因此结果是90度
这里有一个基于这样一个假设的方法,即大部分文本都偏向一边。我们可以根据主文本区域的位置来确定角度
在对图像进行灰度化和高斯模糊化处理后,采用自适应阈值法得到二值图像
从这里我们找到轮廓,并利用轮廓区域进行滤波,去除小噪声粒子和大边界。我们画出任何通过这个过滤器到掩模上的轮廓
为了确定角度,我们根据图像的尺寸将图像分成两半。如果
width > height
那么它必须是一个水平图像,所以我们垂直分割成两部分。如果height > width
那么它必须是一个垂直的图像,所以我们水平地分成两半现在我们有了两个一半,我们可以使用
cv2.countNonZero()
来确定每一半上的白色像素量。以下是确定角度的逻辑:因此图像为0度。这是其他方向的结果
我们可以断定图像被翻转了180度
下面是垂直图像的结果。注意,因为这是一个垂直的图像,所以我们水平分割
因此结果是90度
^{pr2}$相关问题 更多 >
编程相关推荐