admin管理员组

文章数量:1531738

2024年6月15日发(作者:)

通过OpenCV和Python进行文本倾斜校正

本文所展示的是一个由Pyhton实现的文本倾斜校正的脚本,在实现中使用到了

OpenCV和Python的图像处理函数。 假设我们有一幅图像,图像中的文本被旋转了

一个未知的角度。为了对文字进行角度的校正,我们需要完成如下几个步骤:1、检测出图

中的文本范围2、计算出文本被旋转的角度3、将图像旋转特定的角度 本文所介绍的

文本角度校正算法一般被用于自动化文档分析。但是,这个过程本身可以有其他的应用。

通过OpenCV和Python实现文本角度校正 下文将详细介绍如何使用Python和

OpenCV中的基本图像处理函数实现文本的角度校正。 首先,我们将创建一个简单的

案例用于检测我们的校正方案。我们将通过Pyhton和OpenCV编写一个在图片中自动识

别并校正文本角度的程序。一个简单案例 在下面的例子中,我们准备了一个简单的测

试案例。在这个案例中有四幅图,图中的文本被旋转了特定的角度。图1 我们的测试案例,

下面我们将用OpenCV和Python对图中文本的角度进行校正 这四幅图对应了如下四

个文件文件名的前半部分代表了图中文本被旋转的方向,其中neg表示逆时针旋转,pos

表示顺时针旋转。文件名的第二部分表示被旋转的具体角度。 我们的算法将识别出图

像被旋转的方向和角度,进而对其进行校正。下面,我们将介绍如何实现上述功能。基于

OpenCV和Pyhton的文本倾斜校正 首先,我们建立一个新文件,并命名为

correct_,并在文件中插入如下代码:代码2—4行引入需要的Pyhton包。我们

通过引入cv2调用OpenCV,假设您已经在系统中安装了OpenCV,请参考对应的

OpenCV install tutorial在进行系统的配置。下面我们对代码7—10行进行解析,我们在

此只需要一个参数,即--image,该参数代表了图像的路径。在代码的第13行,图像被从

磁盘读入。下一步我们将从图像中识别出文本

在我们的图像中,文字是黑色的而背景是浅色的。然而,为了正确地执行我们的算法,

我们需要将图像反转(即将文字变成浅色的而背景变成深色的)。因为在计算机上执行图像

操作的时候,一般前景色为浅色,而背景(图像中我们不关心的内容)为黑色。 上述

代码23行和24行我们对图像颜色进行了二值化处理。图2 经过二值化处理和颜色反转

后的图像有了这个二值化的图像,我们可以计算出包含了被旋转文本的最小边框。

通过第30行代码找出二值图像中包含前景色的部分的(x,y)坐标。 我们将这些坐标

作为参数传递给函数aRect,该函数将给出包含着整个文字区域矩形边框,这

个边框的旋转角度与图中文本的旋转角度一致。 函数aRect将返回一个

[-90,0)区间内的角度。代码37行和38行处理返回的角度小于-45度的情况,在这样的情

况下,我们需要在原来的角度上增加90度然后在进行校正。当返回的角度大于-45度的时

候,我们直接对角度进行回转。 我们已经确定了文本的倾斜角度,现在,我们需要执

行一个仿射变换对倾斜角度进行校正。代码第46行和47行确定了图像的中心坐标(X,Y),

我们中心坐标和旋转角作为参数传递给函数ationMatrix2D(代码第48行)。

所得到的旋转矩阵M将在代码第49行和50行执行确切的变换。最后,我们在屏幕上显

示我们的结果。代码第53行,我们将旋转的角度显示在图像上,以标示所输出的图像对

应怎样的旋转角度。代码57行至60行用于显示输出的图像。倾斜角度校正结果有了上述

结果,我们通过以下命令来校正图像neg_的角度:

图3 使用OpenCV和Python对文本进行倾斜校正从图中我们可以看到,输入的图

像被逆时针旋转了4度。我们的程序检测出了这个角度,并对其进行了校正。下面是另一

个例子,这一例子中逆时针倾斜的角度为28度。图4 使用OpenCV和Python对文本进

行倾斜校正再一次,我们的算法对输入的图像进行了校正。这次我们尝试一个顺时针旋转

的倾斜角:图5 使用OpenCV和Python对文本进行倾斜校正最后,我们尝试一个41度

的大角度倾斜:图6 使用OpenCV和Python对文本进行倾斜校正无论怎样的倾斜角度,

我们的算法都能够使用OpenCV和Python进行倾斜角的校正。总结 在今天的教程中,

我们使用Python进行了倾斜角度的校正。 所介绍的算法简洁明了,使用了一些基本

的图像处理技术如二值化、计算最小旋转矩形和使用仿射变换对角度进行校正。 我们

可以将这项技术使用到自动文档分析中,通过将所介绍的方法应用到文档扫描件上,对倾

斜角度进行校正,然后利用OCR技术将图像中的文本转化成计算机中的文本字符。

我们希望您喜欢这个教程。 英文原文:

/2017/02/20/text-skew-correction-opencv-python

/

译者:wlzmmm

本文标签: 角度校正文本图像