利用OpenCV第三方库编译Leptonica
source link: https://blog.matrixs.site/post/2017-06-17-leptonica-%E7%BC%96%E8%AF%91leptonica/%E5%88%A9%E7%94%A8opencv%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93%E7%BC%96%E8%AF%91leptonica.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
OpenCV对于做计算机视觉这一行的人肯定非常熟悉,相较于它,另外一个开源库Leptonica就相对小众很多。Leptonica主要是面向教学用途的开源库。最有名的OCR开源库Tesseract就是利用Leptonica作为基础库使用的,尽管如此,Leptonica中使用的一些算法仍值学习,本文就简单介绍下VS编译方法及过程。
- Leptonica
- OpenCV
- CMake
- Visual Studio (本文以2015版为例)
- 由于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:
..\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:
..\install\x64\vc14\staticlib;(OpenCV重新编译后,生成的lib文件所在目录)
Additional Dependencies:
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中添加:
LIBLEPT_EXPORTS
找到config_auto.h,修改里面宏定义,添加:
#define HAVE_LIBPNG 1
#define HAVE_LIBJPEG 1
#define HAVE_LIBTIFF 1
#define HAVEL_LIBZ 1
此时编译工程会出现’INT32’ redefinition的错误。到jmorecfg.h中
#ifndef XMD_H /* X11/xmd.h correctly defines INT32 */
typedef long INT32;
#endif
#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.dll或leptonica-版本号.dll(工程目录bin文件夹中)拷贝至所需工程下即可。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK