深度学习实战12(进阶版)-利用Dewarp实现文本扭曲矫正

大家好,我是微学A1, 我们在生活中会看到一些拍摄扭曲的图片,我们在通过OCR识别的时候,因为扭曲的厉害,而无法识别,我们需要对图片进行处理。

文件图像的变形有扭曲、折叠、褶皱、透视等多种情况,解决方案可以分为参数化方法和非参数化方法。参数化方法构建只能处理简单场景的低维度的数学模型。在非参数方法中,通常需要创建一对数据集。

假设文档变形用低维参数化模型表示,不能处理失真情况,不能处理折叠变形。参数模型主要考虑参数。
1、旋转矢量r和平移矢量t的三维空间中的页面
2、指定页面表面的两个曲率alpha和beta,并将行文本视为一条曲线。这里假设扭曲后成为三次样条线,由两个系数a和b控制。
3、页面上n个水平跨度的垂直偏移。垂直偏移是分割的每行之间的距离。
4.对于每个跨度,水平跨度上m个点的水平偏移。水平偏移是每条直线上设置的点之间的距离。

我们可以利用python,安装第三方库:

pip install page-dewarp

外部调用from page_dewarp import __main__,

#__main__.main(img)   # 图片文字扭曲处理

扭曲处理的main函数代码如下:

from cv2 import namedWindow
import cv2
from .cli import ArgParser
from .debug_utils import cCOLOURS, debug_show
from .image import WarpedImage
from .options import cfg
from .pdf import save_pdf

# for some reason pylint complains about cv2 members being undefined :(
# pylint: disable=E1101


def main(imgfile):
    outfiles = []
    # print(imgfile)
    src = cv2.imread(imgfile)
    # print(src.shape[0],src.shape[1])
    src = src[0:src.shape[0] - 40, 0:src.shape[1]]
    cv_img = cv2.copyMakeBorder(src, 120, 0, 120, 120, cv2.BORDER_REPLICATE)
    cv2.imwrite(imgfile, cv_img)

    processed_img = WarpedImage(imgfile)
    # if processed_img.written:
    #     outfiles.append(processed_img.outfile)
    #     print(f"  wrote {processed_img.outfile}", end="\n\n")
    if cfg.pdf_opts.CONVERT_TO_PDF:
        save_pdf(outfiles)


if __name__ == "__main__":
    main()

通过调用,输入图片地址,可生成处理好的图片,保存你们想要的地址。

 图片处理效果如下:

深度学习实战12(进阶版)-利用Dewarp实现文本扭曲矫正_第1张图片

 后续更新更多功能,请持续关注,如有问题与合作可私信答疑。

你可能感兴趣的:(深度学习实战项目,深度学习,python,opencv)