基于opencv的场景文字识别

理论基础:基于论文 “Real-Time Scene Text Localization and Recognition”。
项目实现:opencv3.0 + tesseract,github开源项目。
开发环境:win7 64位+Visual Studio 2012。
先上一张结果图吧:
基于opencv的场景文字识别_第1张图片
在release版下,速度还是很快的,识别率还算可以。
实现的难点不在代码,因为早有人实现了,让人崩溃的是各种环境的搭建和源码的编译,下边就记录一下怎么让代码跑起来的。

tesseract的搭建

  1. 这里提供各种版本的下载。
  2. 需要手动编译源码,主要是生成lib。
  3. 本人对linux不熟悉,只有去网上下载已经编译好的含有lib的版本(注意版本对应,我是用的vs2012)。大致的文件结构如下:
    基于opencv的场景文字识别_第2张图片

  4. 我在这里遇到了一个问题,没有包含tessdata文件夹。这里给出我的解决办法,下载tesseract安装版本,安装完后将tessdata文件夹拷贝到预编译版本(含有lib文件)的目录下。

  5. 配置环境变量,在path中添加 D:\Tesseract-Build\tesseract-vs2012-master\prebuilt\x64,在cmd中进到tesseract.exe的目录,输入tesseract-v,出现如下文字,恭喜已经成功搭建好tesseract。
    tesseract配置成功

opencv的搭建
1.opencv官网下载,下载好后直接解压即可。
2.下载opencv_contrib
3.编译opencv源码,使用工具cmake。
基于opencv的场景文字识别_第3张图片

基于opencv的场景文字识别_第4张图片

第一次配置后,需要手动添加extra-module的具体位置。如:D:\opencv-3.0\opencv_contrib-master\modules

基于opencv的场景文字识别_第5张图片

添加路径完毕后再次点击configure。搜索tesseract关键字
添加Tesseract_INCLUDE_DIR 路径为 D:/Tesseract-Build/tesseract-vs2012-master/include/tesseract;
Tesseract_LIBRARY 路径为 D:/Tesseract-Build/tesseract-vs2012-master/prebuilt/x64/libtesseract302.lib;
搜索关键字lep,添加Lept_LIBRARY 路径为 D:/Tesseract-Build/tesseract-vs2012-master/prebuilt/x64/liblept168.lib
基于opencv的场景文字识别_第6张图片

确保以上3个路径填写正确后,再起点击configure按钮
基于opencv的场景文字识别_第7张图片

最后点击generate按钮。最后生成的目录结构如下:
基于opencv的场景文字识别_第8张图片

4.用vs2012进行构建。找到cMakeTarget下的INSTALL,右键,选择生成(记得在debug配置下和release配置下分别生成一次)。

基于opencv的场景文字识别_第9张图片

在这一步遇到的一些问题。
问题1:vs编译报错”无法找到tesseract/baseapi.h 文件”。
最后解决办法为修改 D:\opencv-3.0\opencv_contrib-master\modules\text\src下的precomp.hpp文件。将

ifdef HAVE_TESSERACT 
include 
include 
endif

修改为:

ifdef HAVE_TESSERACT
include "D:/Tesseract-Build/tesseract-vs2012-master/tesseract-3.02/api/baseapi.h"
include "D:/Tesseract-Build/tesseract-vs2012-master/tesseract-3.02/ccmai/resultiterator.h"**
endif

具体路径为Tesseract源码中相应的文件夹。修改后记得重新在vs中生成一次
问题2:D:\opencv-3.0\opencv_contrib-master\modules\text\src中的erfilter.cpp文件报错。
解决办法为 打开源文件将下列代码修改
这里写图片描述

这里写图片描述

最后在重新生成,完成后多了一个install文件夹,所有的lib文件和c++头文件就在里边。

5.opencv环境变量配置。
官方说明文档
添加用户变量 OPENCV_HOME : D:\opencv-3.0\manual_build\install\x64\vc11,特别注意版本对应vs2012对应的是vc11。
添加系统变量 path : %OPENCV_HOME%\bin。

6.opencv在vs2012中的配置。
官方说明文档
新建win32控制台应用
基于opencv的场景文字识别_第10张图片
基于opencv的场景文字识别_第11张图片

配置64位编译环境(32位可以跳过此步骤)
基于opencv的场景文字识别_第12张图片

在视图->其他窗口->找到 属性管理器(debug和release版本都要配置一次)
通用属性-> c/c++->附加包含目录
基于opencv的场景文字识别_第13张图片

通用属性->连接器->常规
基于opencv的场景文字识别_第14张图片

通用属性->连接器->输入(将D:\opencv-3.0\manual_build\install\x64\vc11\lib目录下的文件名按debug版本和release版本分别添加即可)
基于opencv的场景文字识别_第15张图片

至此环境搭建完毕,可以运行代码了。本文主要记录了如何在windows环境下运行opencv的文字识别模块,在接下来的工作中还需深入研究论文、读懂源码。力求做出一些改进
写在儿童节的今天 –2016.6.1

你可能感兴趣的:(图像处理)