如何使用OpenCV自动校正文本图像

本文介绍了一种解决图像偏移校正问题的简单方法,特别是在从歪斜图像中提取文本内容时。通过灰度转换、模糊处理、文本块检测和角度计算,实现了图像的去歪斜。在Python和OpenCV的帮助下,该算法能够有效地校正文本图像,适用于OCR前的预处理。测试结果显示,该方法与实际歪斜角度偏差小,效果良好。
摘要由CSDN通过智能技术生成

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

今天,我们想与您分享解决图像偏移校正问题(拉直旋转图像)的简单解决方案。如果我们正在从歪斜图像中提取文本的内容,则必须以一种或另一种形式处理图像。从摄像机图片到扫描的文档-将清理后的图像馈送到OCR工具之前,去歪斜是图像预处理中的必要步骤。

去歪斜算法

让我们开始讨论Deskeweing算法的一般概念。我们的主要目标是将旋转的图像分成文本块,并确定它们的角度。为了让您详细了解我将使用的方法:

1. 照常-将图像转换为灰度。

2. 应用轻微的模糊以减少图像中的噪点。

3. 现在,我们的目标是找到带有文本的区域,即图像的文本块。为了使文本块检测更容易,我们将反转并最大化图像的颜色,这将通过阈值化来实现。因此,现在文本变为白色(恰好为255,255,255白色),而背景为黑色(同样为0,0,0黑色)。

4. 要查找文本块,我们需要合并该块的所有打印字符。我们通过膨胀(扩展白色像素)来实现。在X轴上使用较大的内核可以消除单词之间的所有空间,而在Y轴上使用较小的内核可以将彼此之间的一个块的行混合在一起,但保持文本块之间的较大间隔不变。

5. 现在,用最小面积矩形包围轮廓的简单轮廓检测将形成我们需要的所有文本块。

6. 确定倾斜角度的方法有很多种,但我们将坚持简单的方法-使用最大的文本块并使用其角度。

现在切换到python代码:

# Calculate skew angle of an image
def getSkewAngle(cvImage) -> float:
    #Prep image, copy, convert to gray scale, blur, and threshold
   newImage = cvImage.copy()
   gray = cv2.cvtColor(newImage, cv2.COLOR_BGR2GRAY)
   blur = cv2.GaussianBlur(gray, (9, 9), 0)
   thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV +cv2.THRESH_OTSU)[1]
 
    #Apply dilate to merge text into meaningful lines/paragraphs.
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学视觉

您的赞赏是我们坚持下去的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值