OpenCV对于做计算机视觉这一行的人肯定非常熟悉,相较于它,另外一个开源库Leptonica就相对小众很多。Leptonica主要是面向教学用途的开源库。最有名的OCR开源库Tesseract就是利用Leptonica作为基础库使用的,尽管如此,Leptonica中使用的一些算法仍值学习,本文就简单介绍下VS编译方法及过程。   

工具

  1. Leptonica
  2. OpenCV
  3. CMake
  4. Visual Studio (本文以2015版为例)
  5. 由于Leptonica对于图像读写操作也是依赖第三方库,而且和OpenCV一样,所以采用OpenCV内提供的3rdparty\src来编译。如果不想使用OpenCV内的,其自行下载如下五个库编译: zlib libpng libjpeg libtiff libgif

编译OpenCV

  这里不详细说明,但强调下,OpenCV一定需要重新编译,因为要使用到重新编译后生成的lib文件及两个头文件。具体过程请参考博客《OpenCV源码环境配置(2.X版及3.X版 + VS2008/VS2013 + win7 x86)》

编译Leptonica

CMake生成工程

  解压Leptonica源码包,利用CMake将Leptonica源码包生成所需版本。

配置工程

  打开CMake后的工程,按如下步骤配置leptonica工程。 Additional Include Directions:

1
2
3
4
5
6
7
..\opencv\sources\3rdparty\zlib;
..\opencv\sources\3rdparty\libtiff;
..\opencv\sources\3rdparty\libpng;
..\opencv\sources\3rdparty\libjpeg;
..\leptonica\source\src;
..\$cmake时指定的leptonica工程目录$\src;
..\include\3rdparty;(这个目录为自建目录,将OpenCV编译后,工程文件夹内3rdparty\zlib和3rdparty\libtiff目录下zconf.h和tif_config.h两个文件拷贝至此)

Additional Library Directions:  

1
..\install\x64\vc14\staticlib;(OpenCV重新编译后,生成的lib文件所在目录)

Additional Dependencies:

1
2
3
4
5
Release      or  Debug
libjpeg.lib  or  libjpegd.lib
libpng.lib   or  libpngd.lib
libtiff.lib  or  libtiffd.lib
zlib.lib     or  zlibd.lib

Preprocessor Definitions中添加:

1
LIBLEPT_EXPORTS

  找到config_auto.h,修改里面宏定义,添加:

1
2
3
4
#define HAVE_LIBPNG 1
#define HAVE_LIBJPEG 1
#define HAVE_LIBTIFF 1
#define HAVEL_LIBZ 1

  此时编译工程会出现’INT32’ redefinition的错误。到jmorecfg.h

1
2
3
#ifndef XMD_H			/* X11/xmd.h correctly defines INT32 */
typedef long INT32;
#endif

  改为

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#include <Windows.h>    /* Added by wujiyang 2017.6.13  14:18  complier dlib for leptonica */      
#ifndef XMD_H           /* X11/xmd.h correctly defines INT32 */      
#ifndef _BASETSD_H_     /* Microsoft defines it in basetsd.h */      
#ifndef _BASETSD_H      /* MinGW is slightly different */      
#ifndef QGLOBAL_H       /* Qt defines it in qglobal.h */      
typedef long INT32;      
#endif      
#endif      
#endif      
#endif  

  至此就完成leptonica工程配置,可以重编工程了。

使用重编后的库

  只需将刚编译好的leptonica-版本号d.dllleptonica-版本号.dll(工程目录bin文件夹中)拷贝至所需工程下即可。