基于笔画宽度转换的文字检测(SWT)方法
基于笔画宽度转换的文字检测(SWT)方法较普遍的用于自然场景的文字检测。本文主要介绍Github上一个基于opencv2.4+Boost实现的基于笔画宽度转换的文字检测(SWT)项目,包括其检测效果演示和在windows上的编译方法。
1 前言
基于笔画宽度转换的文字检测(SWT)方法原作者在Github项目地址:https://github.com/aperrau/DetectText
介绍基于笔画宽度转换的文字检测(SWT)方法原理的文献:
感谢原作者的无私分享!
该项目基于opencv2.4和Boost的某个版本,我验证项目时的运行环境:win10 + VS2013 X64 + opencv3.1 + Boost1.6.0。
2. 基于笔画宽度转换的文字检测(SWT)效果
该程序检测时间比较久,配置比较好的电脑会快一些。用程序默认参数检测文献中的范例,该范例的文字为白色,文字底色为深色,因此程序需要选择light-on-dark,其检测效果与文献的给出的图片略有差异,文献中给出的结果文字区域准确,单词清晰,如下图所示:
而实际程序默认参数运行的结果中,文字区域检测基本准确,但每个单词是模糊的,不过调节一下相关参数应该可以做到和文献一致,我暂未尝试,有兴趣的同学可以试试看,目前默认参数检测结果如下图所示:
我也尝试用该程序检测了中文,但结果并不是很理想,该项目中的方法可能不适合用于检测中文,结果如下:
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用于取消部分内容的编译,避免编译的库文件过大。
1 |
b2 stage --toolset=msvc-12.0 --without-python --without-graph --without-graph_parallel --stagedir=".\bin\vc12_x64" link=static runtime-link=shared runtime-link=static threading=multi debug release address-model=64 architecture=x86 |
编译成功后的界面如下:
d. 根据编译文件的目录设置Boost包含目录和库目录,设置路径分别如下图所示:
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);
带参数的命令行程序调试时,可以在项目属性–>调试中写入后面三个参数,参数与参数之间用空格间隔,如下图所示: