基于笔画宽度转换的文字检测(SWT)方法

       基于笔画宽度转换的文字检测(SWT)方法较普遍的用于自然场景的文字检测。本文主要介绍Github上一个基于opencv2.4+Boost实现的基于笔画宽度转换的文字检测(SWT)项目,包括其检测效果演示和在windows上的编译方法。

       1 前言

       基于笔画宽度转换的文字检测(SWT)方法原作者在Github项目地址:https://github.com/aperrau/DetectText

       介绍基于笔画宽度转换的文字检测(SWT)方法原理的文献:

http://www.cs.cornell.edu/courses/cs4670/2010fa/projects/final/results/group_of_arp86_sk2357/Writeup.pdf

        感谢原作者的无私分享!

        该项目基于opencv2.4和Boost的某个版本,我验证项目时的运行环境:win10 + VS2013 X64 + opencv3.1 + Boost1.6.0。

        2. 基于笔画宽度转换的文字检测(SWT)效果

        该程序检测时间比较久,配置比较好的电脑会快一些。用程序默认参数检测文献中的范例,该范例的文字为白色,文字底色为深色,因此程序需要选择light-on-dark,其检测效果与文献的给出的图片略有差异,文献中给出的结果文字区域准确,单词清晰,如下图所示:

reference result

        而实际程序默认参数运行的结果中,文字区域检测基本准确,但每个单词是模糊的,不过调节一下相关参数应该可以做到和文献一致,我暂未尝试,有兴趣的同学可以试试看,目前默认参数检测结果如下图所示:

light on dark

        我也尝试用该程序检测了中文,但结果并不是很理想,该项目中的方法可能不适合用于检测中文,结果如下:

        detect chinese

        3.基于笔画宽度转换的文字检测(SWT)项目编译方法

        3.1 Boost 1.6.0编译

        该项目在实现SWT时用到了Boost库,因此我先下载并编译了Boost1.6.0,编译步骤如下:

        a. 从http://www.boost.org/下载适当的版本并解压缩,我这里用的是Boost1.6.0,解压缩路径为D:\Boost1.6.0;

        b. 打开Visual Studio 2013 Tools,选择”VS2013 x64 本机工具命令提示”,进入路径D:\Boost1.6.0;

        c. 输入下面的命令,等待Boost库编译完成。其中toolset用于设置VS的版本;stagedir用于指定编译后库文件存放的目录;编译X64版本时,必须需要添加address-model=64属性,才能生成64位的DLL,如果没有这个属性的话,会默认生成32位的平台库;without用于取消部分内容的编译,避免编译的库文件过大。

        编译成功后的界面如下:

building result of Boost C++

       d. 根据编译文件的目录设置Boost包含目录和库目录,设置路径分别如下图所示:

Boost include path

set Boost linker

       3.2 opencv配置

       添加opencv库文件和头文件,以及在项目属性“链接器–>输入–>附加依赖项”中添加opencv_world310d.lib。这里不再赘述。

      4 基于笔画宽度转换的文字检测(SWT)调试

      原项目是带参数的命令行程序,共4个参数,各参数的意义如下:

      argv[0]:当前执行程序的名称;

      argv[1]:待检测图片路径名称;

      argv[2]:检测结果图片存储路径和名称;

      argv[3]:用于选择当前文字是light-on-dark(0)或dark-on-light(1);

      带参数的命令行程序调试时,可以在项目属性–>调试中写入后面三个参数,参数与参数之间用空格间隔,如下图所示:

Parameter setting

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Fork me on GitHub