motion-ocr 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +10 -0
- data/LICENSE +28 -0
- data/README.md +22 -0
- data/Rakefile +17 -0
- data/app/app_delegate.rb +2 -0
- data/lib/motion-ocr.rb +26 -0
- data/lib/motion-ocr/version.rb +3 -0
- data/motion-ocr.gemspec +20 -0
- data/resources/tessdata/configs/nodict +3 -0
- data/resources/tessdata/eng.traineddata +0 -0
- data/spec/motion_ocr_spec.rb +23 -0
- data/spec/support/phototest.gif +0 -0
- data/vendor/MotionOCR/MotionOCR.bridgesupport +14722 -0
- data/vendor/MotionOCR/MotionOCR.xcodeproj/project.pbxproj +390 -0
- data/vendor/MotionOCR/MotionOCR.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/vendor/MotionOCR/MotionOCR.xcodeproj/project.xcworkspace/xcuserdata/fer.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/vendor/MotionOCR/MotionOCR.xcodeproj/xcuserdata/fer.xcuserdatad/xcschemes/MotionOCR.xcscheme +59 -0
- data/vendor/MotionOCR/MotionOCR.xcodeproj/xcuserdata/fer.xcuserdatad/xcschemes/xcschememanagement.plist +22 -0
- data/vendor/MotionOCR/MotionOCR/MotionOCR-Prefix.pch +7 -0
- data/vendor/MotionOCR/MotionOCR/MotionOCR.h +22 -0
- data/vendor/MotionOCR/MotionOCR/MotionOCR.mm +89 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/allheaders.h +32 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/alltypes.h +49 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/array.h +125 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/arrayaccess.h +194 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/bbuffer.h +46 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/bmf.h +51 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/bmp.h +74 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/ccbord.h +103 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/dewarp.h +57 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/endianness.h +11 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/environ.h +281 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/freetype.h +23 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/gplot.h +77 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/heap.h +73 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/imageio.h +153 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/jbclass.h +122 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/leptprotos.h +2058 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/leptwin.h +34 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/list.h +76 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/morph.h +218 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/pix.h +945 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/ptra.h +80 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/queue.h +63 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/readbarcode.h +220 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/regutils.h +122 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/stack.h +55 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/sudoku.h +62 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/watershed.h +52 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/apitypes.h +31 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/baseapi.h +664 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/errcode.h +104 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/genericvector.h +763 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/helpers.h +139 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/host.h +180 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/ndminx.h +31 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/ocrclass.h +335 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/platform.h +48 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/publictypes.h +202 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/tesscallback.h +1238 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/thresholder.h +170 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/unichar.h +85 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/lib/liblept.a +0 -0
- data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/lib/libtesseract_all.a +0 -0
- metadata +113 -0
@@ -0,0 +1,46 @@
|
|
1
|
+
/*====================================================================*
|
2
|
+
- Copyright (C) 2001 Leptonica. All rights reserved.
|
3
|
+
- This software is distributed in the hope that it will be
|
4
|
+
- useful, but with NO WARRANTY OF ANY KIND.
|
5
|
+
- No author or distributor accepts responsibility to anyone for the
|
6
|
+
- consequences of using this software, or for whether it serves any
|
7
|
+
- particular purpose or works at all, unless he or she says so in
|
8
|
+
- writing. Everyone is granted permission to copy, modify and
|
9
|
+
- redistribute this source code, for commercial or non-commercial
|
10
|
+
- purposes, with the following restrictions: (1) the origin of this
|
11
|
+
- source code must not be misrepresented; (2) modified versions must
|
12
|
+
- be plainly marked as such; and (3) this notice may not be removed
|
13
|
+
- or altered from any source or modified source distribution.
|
14
|
+
*====================================================================*/
|
15
|
+
|
16
|
+
#ifndef LEPTONICA_BBUFFER_H
|
17
|
+
#define LEPTONICA_BBUFFER_H
|
18
|
+
|
19
|
+
/*
|
20
|
+
* bbuffer.h
|
21
|
+
*
|
22
|
+
* Expandable byte buffer for reading data in from memory and
|
23
|
+
* writing data out to other memory.
|
24
|
+
*
|
25
|
+
* This implements a queue of bytes, so data read in is put
|
26
|
+
* on the "back" of the queue (i.e., the end of the byte array)
|
27
|
+
* and data written out is taken from the "front" of the queue
|
28
|
+
* (i.e., from an index marker "nwritten" that is initially set at
|
29
|
+
* the beginning of the array.) As usual with expandable
|
30
|
+
* arrays, we keep the size of the allocated array and the
|
31
|
+
* number of bytes that have been read into the array.
|
32
|
+
*
|
33
|
+
* For implementation details, see bbuffer.c.
|
34
|
+
*/
|
35
|
+
|
36
|
+
struct ByteBuffer
|
37
|
+
{
|
38
|
+
l_int32 nalloc; /* size of allocated byte array */
|
39
|
+
l_int32 n; /* number of bytes read into to the array */
|
40
|
+
l_int32 nwritten; /* number of bytes written from the array */
|
41
|
+
l_uint8 *array; /* byte array */
|
42
|
+
};
|
43
|
+
typedef struct ByteBuffer BBUFFER;
|
44
|
+
|
45
|
+
|
46
|
+
#endif /* LEPTONICA_BBUFFER_H */
|
@@ -0,0 +1,51 @@
|
|
1
|
+
/*====================================================================*
|
2
|
+
- Copyright (C) 2001 Leptonica. All rights reserved.
|
3
|
+
- This software is distributed in the hope that it will be
|
4
|
+
- useful, but with NO WARRANTY OF ANY KIND.
|
5
|
+
- No author or distributor accepts responsibility to anyone for the
|
6
|
+
- consequences of using this software, or for whether it serves any
|
7
|
+
- particular purpose or works at all, unless he or she says so in
|
8
|
+
- writing. Everyone is granted permission to copy, modify and
|
9
|
+
- redistribute this source code, for commercial or non-commercial
|
10
|
+
- purposes, with the following restrictions: (1) the origin of this
|
11
|
+
- source code must not be misrepresented; (2) modified versions must
|
12
|
+
- be plainly marked as such; and (3) this notice may not be removed
|
13
|
+
- or altered from any source or modified source distribution.
|
14
|
+
*====================================================================*/
|
15
|
+
|
16
|
+
#ifndef LEPTONICA_BMF_H
|
17
|
+
#define LEPTONICA_BMF_H
|
18
|
+
|
19
|
+
/*
|
20
|
+
* bmf.h
|
21
|
+
*
|
22
|
+
* Simple data structure to hold bitmap fonts and related data
|
23
|
+
*/
|
24
|
+
|
25
|
+
/* Constants for deciding when text block is divided into paragraphs */
|
26
|
+
enum {
|
27
|
+
SPLIT_ON_LEADING_WHITE = 1, /* tab or space at beginning of line */
|
28
|
+
SPLIT_ON_BLANK_LINE = 2, /* newline with optional white space */
|
29
|
+
SPLIT_ON_BOTH = 3 /* leading white space or newline */
|
30
|
+
};
|
31
|
+
|
32
|
+
|
33
|
+
struct L_Bmf
|
34
|
+
{
|
35
|
+
struct Pixa *pixa; /* pixa of bitmaps for 93 characters */
|
36
|
+
l_int32 size; /* font size (in points at 300 ppi) */
|
37
|
+
char *directory; /* directory containing font bitmaps */
|
38
|
+
l_int32 baseline1; /* baseline offset for ascii 33 - 57 */
|
39
|
+
l_int32 baseline2; /* baseline offset for ascii 58 - 91 */
|
40
|
+
l_int32 baseline3; /* baseline offset for ascii 93 - 126 */
|
41
|
+
l_int32 lineheight; /* max height of line of chars */
|
42
|
+
l_int32 kernwidth; /* pixel dist between char bitmaps */
|
43
|
+
l_int32 spacewidth; /* pixel dist between word bitmaps */
|
44
|
+
l_int32 vertlinesep; /* extra vertical space between text lines */
|
45
|
+
l_int32 *fonttab; /* table mapping ascii --> font index */
|
46
|
+
l_int32 *baselinetab; /* table mapping ascii --> baseline offset */
|
47
|
+
l_int32 *widthtab; /* table mapping ascii --> char width */
|
48
|
+
};
|
49
|
+
typedef struct L_Bmf L_BMF;
|
50
|
+
|
51
|
+
#endif /* LEPTONICA_BMF_H */
|
@@ -0,0 +1,74 @@
|
|
1
|
+
/*====================================================================*
|
2
|
+
- Copyright (C) 2001 Leptonica. All rights reserved.
|
3
|
+
- This software is distributed in the hope that it will be
|
4
|
+
- useful, but with NO WARRANTY OF ANY KIND.
|
5
|
+
- No author or distributor accepts responsibility to anyone for the
|
6
|
+
- consequences of using this software, or for whether it serves any
|
7
|
+
- particular purpose or works at all, unless he or she says so in
|
8
|
+
- writing. Everyone is granted permission to copy, modify and
|
9
|
+
- redistribute this source code, for commercial or non-commercial
|
10
|
+
- purposes, with the following restrictions: (1) the origin of this
|
11
|
+
- source code must not be misrepresented; (2) modified versions must
|
12
|
+
- be plainly marked as such; and (3) this notice may not be removed
|
13
|
+
- or altered from any source or modified source distribution.
|
14
|
+
*====================================================================*/
|
15
|
+
|
16
|
+
#ifndef LEPTONICA_BMP_H
|
17
|
+
#define LEPTONICA_BMP_H
|
18
|
+
|
19
|
+
/*
|
20
|
+
* This file is here to describe the fields in the header of
|
21
|
+
* the BMP file. These fields are not used directly in Leptonica.
|
22
|
+
* The only thing we use are the sizes of these two headers.
|
23
|
+
* Furthermore, because of potential namespace conflicts with
|
24
|
+
* the typedefs and defined sizes, we have changed the names
|
25
|
+
* to protect anyone who may also need to use the original definitions.
|
26
|
+
* Thanks to J. D. Bryan for pointing out the potential problems when
|
27
|
+
* developing on Win32 compatible systems.
|
28
|
+
*/
|
29
|
+
|
30
|
+
/*-------------------------------------------------------------*
|
31
|
+
* BMP file header *
|
32
|
+
*-------------------------------------------------------------*/
|
33
|
+
struct BMP_FileHeader
|
34
|
+
{
|
35
|
+
l_int16 bfType; /* file type; must be "BM" */
|
36
|
+
l_int16 bfSize; /* length of the file;
|
37
|
+
sizeof(BMP_FileHeader) +
|
38
|
+
sizeof(BMP_InfoHeader) +
|
39
|
+
size of color table +
|
40
|
+
size of DIB bits */
|
41
|
+
l_int16 bfFill1; /* remainder of the bfSize field */
|
42
|
+
l_int16 bfReserved1; /* don't care (set to 0)*/
|
43
|
+
l_int16 bfReserved2; /* don't care (set to 0)*/
|
44
|
+
l_int16 bfOffBits; /* offset from beginning of file */
|
45
|
+
l_int16 bfFill2; /* remainder of the bfOffBits field */
|
46
|
+
};
|
47
|
+
typedef struct BMP_FileHeader BMP_FH;
|
48
|
+
|
49
|
+
#define BMP_FHBYTES sizeof(BMP_FH)
|
50
|
+
|
51
|
+
|
52
|
+
/*-------------------------------------------------------------*
|
53
|
+
* BMP info header *
|
54
|
+
*-------------------------------------------------------------*/
|
55
|
+
struct BMP_InfoHeader
|
56
|
+
{
|
57
|
+
l_int32 biSize; /* size of the BMP_InfoHeader struct */
|
58
|
+
l_int32 biWidth; /* bitmap width in pixels */
|
59
|
+
l_int32 biHeight; /* bitmap height in pixels */
|
60
|
+
l_int16 biPlanes; /* number of bitmap planes */
|
61
|
+
l_int16 biBitCount; /* number of bits per pixel */
|
62
|
+
l_int32 biCompression; /* compression format (0 == uncompressed) */
|
63
|
+
l_int32 biSizeImage; /* size of image in bytes */
|
64
|
+
l_int32 biXPelsPerMeter; /* pixels per meter in x direction */
|
65
|
+
l_int32 biYPelsPerMeter; /* pixels per meter in y direction */
|
66
|
+
l_int32 biClrUsed; /* number of colors used */
|
67
|
+
l_int32 biClrImportant; /* number of important colors used */
|
68
|
+
};
|
69
|
+
typedef struct BMP_InfoHeader BMP_IH;
|
70
|
+
|
71
|
+
#define BMP_IHBYTES sizeof(BMP_IH)
|
72
|
+
|
73
|
+
|
74
|
+
#endif /* LEPTONICA_BMP_H */
|
@@ -0,0 +1,103 @@
|
|
1
|
+
/*====================================================================*
|
2
|
+
- Copyright (C) 2001 Leptonica. All rights reserved.
|
3
|
+
- This software is distributed in the hope that it will be
|
4
|
+
- useful, but with NO WARRANTY OF ANY KIND.
|
5
|
+
- No author or distributor accepts responsibility to anyone for the
|
6
|
+
- consequences of using this software, or for whether it serves any
|
7
|
+
- particular purpose or works at all, unless he or she says so in
|
8
|
+
- writing. Everyone is granted permission to copy, modify and
|
9
|
+
- redistribute this source code, for commercial or non-commercial
|
10
|
+
- purposes, with the following restrictions: (1) the origin of this
|
11
|
+
- source code must not be misrepresented; (2) modified versions must
|
12
|
+
- be plainly marked as such; and (3) this notice may not be removed
|
13
|
+
- or altered from any source or modified source distribution.
|
14
|
+
*====================================================================*/
|
15
|
+
|
16
|
+
#ifndef LEPTONICA_CCBORD_H
|
17
|
+
#define LEPTONICA_CCBORD_H
|
18
|
+
|
19
|
+
/*
|
20
|
+
* ccbord.h
|
21
|
+
*
|
22
|
+
* CCBord: represents a single connected component
|
23
|
+
* CCBorda: an array of CCBord
|
24
|
+
*/
|
25
|
+
|
26
|
+
/* Use in ccbaStepChainsToPixCoords() */
|
27
|
+
enum {
|
28
|
+
CCB_LOCAL_COORDS = 1,
|
29
|
+
CCB_GLOBAL_COORDS = 2
|
30
|
+
};
|
31
|
+
|
32
|
+
/* Use in ccbaGenerateSPGlobalLocs() */
|
33
|
+
enum {
|
34
|
+
CCB_SAVE_ALL_PTS = 1,
|
35
|
+
CCB_SAVE_TURNING_PTS = 2
|
36
|
+
};
|
37
|
+
|
38
|
+
|
39
|
+
/* CCBord contains:
|
40
|
+
*
|
41
|
+
* (1) a minimally-clipped bitmap of the component (pix),
|
42
|
+
* (2) a boxa consisting of:
|
43
|
+
* for the primary component:
|
44
|
+
* (xul, yul) pixel location in global coords
|
45
|
+
* (w, h) of the bitmap
|
46
|
+
* for the hole components:
|
47
|
+
* (x, y) in relative coordinates in primary component
|
48
|
+
* (w, h) of the hole border (which is 2 pixels
|
49
|
+
* larger in each direction than the hole itself)
|
50
|
+
* (3) a pta ('start') of the initial border pixel location for each
|
51
|
+
* closed curve, all in relative coordinates of the primary
|
52
|
+
* component. This is given for the primary component,
|
53
|
+
* followed by the hole components, if any.
|
54
|
+
* (4) a refcount of the ccbord; used internally when a ccbord
|
55
|
+
* is accessed from a ccborda (array of ccbord)
|
56
|
+
* (5) a ptaa for the chain code for the border in relative
|
57
|
+
* coordinates, where the first pta is the exterior border
|
58
|
+
* and all other pta are for interior borders (holes)
|
59
|
+
* (6) a ptaa for the global pixel loc rendition of the border,
|
60
|
+
* where the first pta is the exterior border and all other
|
61
|
+
* pta are for interior borders (holes).
|
62
|
+
* This is derived from the local or step chain code.
|
63
|
+
* (7) a numaa for the chain code for the border as orientation
|
64
|
+
* directions between successive border pixels, where
|
65
|
+
* the first numa is the exterior border and all other
|
66
|
+
* numa are for interior borders (holes). This is derived
|
67
|
+
* from the local chain code. The 8 directions are 0 - 7.
|
68
|
+
* (8) a pta for a single chain for each c.c., comprised of outer
|
69
|
+
* and hole borders, plus cut paths between them, all in
|
70
|
+
* local coords.
|
71
|
+
* (9) a pta for a single chain for each c.c., comprised of outer
|
72
|
+
* and hole borders, plus cut paths between them, all in
|
73
|
+
* global coords.
|
74
|
+
*/
|
75
|
+
struct CCBord
|
76
|
+
{
|
77
|
+
struct Pix *pix; /* component bitmap (min size) */
|
78
|
+
struct Boxa *boxa; /* regions of each closed curve */
|
79
|
+
struct Pta *start; /* initial border pixel locations */
|
80
|
+
l_int32 refcount; /* number of handles; start at 1 */
|
81
|
+
struct Ptaa *local; /* ptaa of chain pixels (local) */
|
82
|
+
struct Ptaa *global; /* ptaa of chain pixels (global) */
|
83
|
+
struct Numaa *step; /* numaa of chain code (step dir) */
|
84
|
+
struct Pta *splocal; /* pta of single chain (local) */
|
85
|
+
struct Pta *spglobal; /* pta of single chain (global) */
|
86
|
+
};
|
87
|
+
typedef struct CCBord CCBORD;
|
88
|
+
|
89
|
+
|
90
|
+
struct CCBorda
|
91
|
+
{
|
92
|
+
struct Pix *pix; /* input pix (may be null) */
|
93
|
+
l_int32 w; /* width of pix */
|
94
|
+
l_int32 h; /* height of pix */
|
95
|
+
l_int32 n; /* number of ccbord in ptr array */
|
96
|
+
l_int32 nalloc; /* number of ccbord ptrs allocated */
|
97
|
+
struct CCBord **ccb; /* ccb ptr array */
|
98
|
+
};
|
99
|
+
typedef struct CCBorda CCBORDA;
|
100
|
+
|
101
|
+
|
102
|
+
#endif /* LEPTONICA_CCBORD_H */
|
103
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
/*====================================================================*
|
2
|
+
- Copyright (C) 2001 Leptonica. All rights reserved.
|
3
|
+
- This software is distributed in the hope that it will be
|
4
|
+
- useful, but with NO WARRANTY OF ANY KIND.
|
5
|
+
- No author or distributor accepts responsibility to anyone for the
|
6
|
+
- consequences of using this software, or for whether it serves any
|
7
|
+
- particular purpose or works at all, unless he or she says so in
|
8
|
+
- writing. Everyone is granted permission to copy, modify and
|
9
|
+
- redistribute this source code, for commercial or non-commercial
|
10
|
+
- purposes, with the following restrictions: (1) the origin of this
|
11
|
+
- source code must not be misrepresented; (2) modified versions must
|
12
|
+
- be plainly marked as such; and (3) this notice may not be removed
|
13
|
+
- or altered from any source or modified source distribution.
|
14
|
+
*====================================================================*/
|
15
|
+
|
16
|
+
#ifndef LEPTONICA_DEWARP_H
|
17
|
+
#define LEPTONICA_DEWARP_H
|
18
|
+
|
19
|
+
/*
|
20
|
+
* dewarp.h
|
21
|
+
*
|
22
|
+
* Data structure to hold arrays and results for generating
|
23
|
+
* a vertical disparity array based on textlines. The disparity
|
24
|
+
* array is two-dimensional, and it represents a vertical
|
25
|
+
* displacement, relative to the flat point in the textlines.
|
26
|
+
* After dewarping, all points on the altered curve will have
|
27
|
+
* a y-value equal to the flat point.
|
28
|
+
*
|
29
|
+
* The sampled vertical disparity array is expanded to full resolution,
|
30
|
+
* using linear interpolation, from which it is trivially applied
|
31
|
+
* to the input image.
|
32
|
+
*/
|
33
|
+
|
34
|
+
#define DEWARP_VERSION_NUMBER 1
|
35
|
+
|
36
|
+
struct L_Dewarp
|
37
|
+
{
|
38
|
+
struct Pix *pixs; /* source pix, 1 bpp */
|
39
|
+
struct Pix *pixd; /* dewarped pix; 1, 8 or 32 bpp */
|
40
|
+
struct FPix *sampvdispar; /* sampled vertical disparity array */
|
41
|
+
struct FPix *samphdispar; /* sampled horizontal disparity array */
|
42
|
+
struct FPix *fullvdispar; /* full vertical disparity array */
|
43
|
+
struct FPix *fullhdispar; /* full horiztontal disparity array */
|
44
|
+
struct Numa *naflats; /* sorted flat location of each line */
|
45
|
+
struct Numa *nacurves; /* sorted curvature of each line */
|
46
|
+
l_int32 pageno; /* page number; important for reuse */
|
47
|
+
l_int32 sampling; /* sampling factor of disparity array */
|
48
|
+
l_int32 minlines; /* min number of long lines required */
|
49
|
+
l_int32 applyhoriz; /* flag for estimating horiz. disparity */
|
50
|
+
l_int32 nx; /* number of sampling pts in x direction */
|
51
|
+
l_int32 ny; /* number of sampling pts in y direction */
|
52
|
+
l_int32 extraw; /* extra width required for hor. disparity */
|
53
|
+
l_int32 success; /* sets to 1 if model build succeeds */
|
54
|
+
};
|
55
|
+
typedef struct L_Dewarp L_DEWARP;
|
56
|
+
|
57
|
+
#endif /* LEPTONICA_DEWARP_H */
|
@@ -0,0 +1,281 @@
|
|
1
|
+
/*====================================================================*
|
2
|
+
- Copyright (C) 2001 Leptonica. All rights reserved.
|
3
|
+
- This software is distributed in the hope that it will be
|
4
|
+
- useful, but with NO WARRANTY OF ANY KIND.
|
5
|
+
- No author or distributor accepts responsibility to anyone for the
|
6
|
+
- consequences of using this software, or for whether it serves any
|
7
|
+
- particular purpose or works at all, unless he or she says so in
|
8
|
+
- writing. Everyone is granted permission to copy, modify and
|
9
|
+
- redistribute this source code, for commercial or non-commercial
|
10
|
+
- purposes, with the following restrictions: (1) the origin of this
|
11
|
+
- source code must not be misrepresented; (2) modified versions must
|
12
|
+
- be plainly marked as such; and (3) this notice may not be removed
|
13
|
+
- or altered from any source or modified source distribution.
|
14
|
+
*====================================================================*/
|
15
|
+
|
16
|
+
#ifndef LEPTONICA_ENVIRON_H
|
17
|
+
#define LEPTONICA_ENVIRON_H
|
18
|
+
|
19
|
+
/*------------------------------------------------------------------------*
|
20
|
+
* Defines and includes differ for Unix and Windows. Also for Windows, *
|
21
|
+
* differentiate between conditionals based on platform and compiler. *
|
22
|
+
* For platforms: *
|
23
|
+
* _WIN32 => Windows, 32- or 64-bit *
|
24
|
+
* _WIN64 => Windows, 64-bit only *
|
25
|
+
* __CYGWIN__ => Cygwin *
|
26
|
+
* For compilers: *
|
27
|
+
* __GNUC__ => gcc *
|
28
|
+
* _MSC_VER => msvc *
|
29
|
+
*------------------------------------------------------------------------*/
|
30
|
+
|
31
|
+
/* MS VC++ does not provide stdint.h, so define the missing types here */
|
32
|
+
|
33
|
+
#ifndef _MSC_VER
|
34
|
+
#include <stdint.h>
|
35
|
+
|
36
|
+
#else
|
37
|
+
/* Note that _WIN32 is defined for both 32 and 64 bit applications,
|
38
|
+
whereas _WIN64 is defined only for the latter */
|
39
|
+
|
40
|
+
#ifdef _WIN64
|
41
|
+
typedef __int64 intptr_t;
|
42
|
+
typedef unsigned __int64 uintptr_t;
|
43
|
+
#else
|
44
|
+
typedef int intptr_t;
|
45
|
+
typedef unsigned int uintptr_t;
|
46
|
+
#endif
|
47
|
+
|
48
|
+
/* VC++6 doesn't seem to have powf, expf. */
|
49
|
+
#if (_MSC_VER < 1400)
|
50
|
+
#define powf(x, y) (float)pow((double)(x), (double)(y))
|
51
|
+
#define expf(x) (float)exp((double)(x))
|
52
|
+
#endif
|
53
|
+
|
54
|
+
#endif /* _MSC_VER */
|
55
|
+
|
56
|
+
/* Windows specifics */
|
57
|
+
|
58
|
+
#ifdef _WIN32
|
59
|
+
|
60
|
+
/* DLL EXPORTS and IMPORTS:
|
61
|
+
* Important: LEPTONLIB_* is deprected. It is retained here only for
|
62
|
+
* compatibility with tesseract 3.00. In your project files, use
|
63
|
+
* LIBLEPT_EXPORTS and LIBLEPT_IMPORTS */
|
64
|
+
#if defined(LIBLEPT_EXPORTS) || defined(LEPTONLIB_EXPORTS)
|
65
|
+
#define LEPT_DLL __declspec(dllexport)
|
66
|
+
#elif defined(LIBLEPT_IMPORTS) || defined(LEPTONLIB_IMPORTS)
|
67
|
+
#define LEPT_DLL __declspec(dllimport)
|
68
|
+
#else
|
69
|
+
#define LEPT_DLL
|
70
|
+
#endif
|
71
|
+
|
72
|
+
#else /* non-WINDOWS-SPECIFICS */
|
73
|
+
#include <stdint.h>
|
74
|
+
#define LEPT_DLL
|
75
|
+
#endif /* _WIN32 */
|
76
|
+
|
77
|
+
typedef intptr_t l_intptr_t;
|
78
|
+
typedef uintptr_t l_uintptr_t;
|
79
|
+
typedef void *L_TIMER;
|
80
|
+
|
81
|
+
|
82
|
+
/*--------------------------------------------------------------------*
|
83
|
+
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*
|
84
|
+
* USER CONFIGURABLE *
|
85
|
+
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*
|
86
|
+
* Environ variables with I/O libraries *
|
87
|
+
* Manual Configuration Only: NOT AUTO_CONF *
|
88
|
+
*--------------------------------------------------------------------*/
|
89
|
+
/*
|
90
|
+
* Leptonica provides interfaces to link to five external image I/O
|
91
|
+
* libraries, plus zlib. Setting any of these to 0 here causes
|
92
|
+
* non-functioning stubs to be linked.
|
93
|
+
*/
|
94
|
+
#ifndef HAVE_CONFIG_H
|
95
|
+
#define HAVE_LIBJPEG 1
|
96
|
+
#define HAVE_LIBTIFF 1
|
97
|
+
#define HAVE_LIBPNG 1
|
98
|
+
#define HAVE_LIBZ 1
|
99
|
+
#define HAVE_LIBGIF 0
|
100
|
+
#define HAVE_LIBUNGIF 0
|
101
|
+
#define HAVE_LIBWEBP 0
|
102
|
+
#endif /* ~HAVE_CONFIG_H */
|
103
|
+
|
104
|
+
/*
|
105
|
+
* On linux systems, you can do I/O between Pix and memory. Specifically,
|
106
|
+
* you can compress (write compressed data to memory from a Pix) and
|
107
|
+
* uncompress (read from compressed data in memory to a Pix).
|
108
|
+
* For jpeg, png, pnm and bmp, these use the non-posix GNU functions
|
109
|
+
* fmemopen() and open_memstream(). These functions are not
|
110
|
+
* available on other systems. To use these functions in linux,
|
111
|
+
* you must define HAVE_FMEMOPEN to be 1 here.
|
112
|
+
*/
|
113
|
+
#ifndef HAVE_CONFIG_H
|
114
|
+
#define HAVE_FMEMOPEN 0
|
115
|
+
#endif /* ~HAVE_CONFIG_H */
|
116
|
+
|
117
|
+
|
118
|
+
/*--------------------------------------------------------------------*
|
119
|
+
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*
|
120
|
+
* USER CONFIGURABLE *
|
121
|
+
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*
|
122
|
+
* Environ variables for uncompressed formatted image I/O *
|
123
|
+
*--------------------------------------------------------------------*/
|
124
|
+
/*
|
125
|
+
* Leptonica supplies image I/O for pnm, bmp, ps, and pdf.
|
126
|
+
* Setting any of these to 0 causes non-functioning stubs to be linked.
|
127
|
+
*/
|
128
|
+
#define USE_BMPIO 1
|
129
|
+
#define USE_PNMIO 1
|
130
|
+
#define USE_PSIO 1
|
131
|
+
#define USE_PDFIO 1
|
132
|
+
|
133
|
+
|
134
|
+
/*--------------------------------------------------------------------*
|
135
|
+
* Built-in types *
|
136
|
+
*--------------------------------------------------------------------*/
|
137
|
+
typedef signed char l_int8;
|
138
|
+
typedef unsigned char l_uint8;
|
139
|
+
typedef short l_int16;
|
140
|
+
typedef unsigned short l_uint16;
|
141
|
+
typedef int l_int32;
|
142
|
+
typedef unsigned int l_uint32;
|
143
|
+
typedef float l_float32;
|
144
|
+
typedef double l_float64;
|
145
|
+
|
146
|
+
|
147
|
+
/*------------------------------------------------------------------------*
|
148
|
+
* Standard macros *
|
149
|
+
*------------------------------------------------------------------------*/
|
150
|
+
#ifndef L_MIN
|
151
|
+
#define L_MIN(x,y) (((x) < (y)) ? (x) : (y))
|
152
|
+
#endif
|
153
|
+
|
154
|
+
#ifndef L_MAX
|
155
|
+
#define L_MAX(x,y) (((x) > (y)) ? (x) : (y))
|
156
|
+
#endif
|
157
|
+
|
158
|
+
#ifndef L_ABS
|
159
|
+
#define L_ABS(x) (((x) < 0) ? (-1 * (x)) : (x))
|
160
|
+
#endif
|
161
|
+
|
162
|
+
#ifndef L_SIGN
|
163
|
+
#define L_SIGN(x) (((x) < 0) ? -1 : 1)
|
164
|
+
#endif
|
165
|
+
|
166
|
+
#ifndef UNDEF
|
167
|
+
#define UNDEF -1
|
168
|
+
#endif
|
169
|
+
|
170
|
+
#ifndef NULL
|
171
|
+
#define NULL 0
|
172
|
+
#endif
|
173
|
+
|
174
|
+
#ifndef TRUE
|
175
|
+
#define TRUE 1
|
176
|
+
#endif
|
177
|
+
|
178
|
+
#ifndef FALSE
|
179
|
+
#define FALSE 0
|
180
|
+
#endif
|
181
|
+
|
182
|
+
|
183
|
+
/*--------------------------------------------------------------------*
|
184
|
+
* Environ variables used within compiler invocation *
|
185
|
+
*--------------------------------------------------------------------*/
|
186
|
+
/*
|
187
|
+
* To control conditional compilation, one of two variables
|
188
|
+
*
|
189
|
+
* L_LITTLE_ENDIAN (e.g., for Intel X86)
|
190
|
+
* L_BIG_ENDIAN (e.g., for Sun SPARC, Mac Power PC)
|
191
|
+
*
|
192
|
+
* is defined when the GCC compiler is invoked.
|
193
|
+
* All code should compile properly for both hardware architectures.
|
194
|
+
*/
|
195
|
+
|
196
|
+
|
197
|
+
/*------------------------------------------------------------------------*
|
198
|
+
* Simple search state variables *
|
199
|
+
*------------------------------------------------------------------------*/
|
200
|
+
enum {
|
201
|
+
L_NOT_FOUND = 0,
|
202
|
+
L_FOUND = 1
|
203
|
+
};
|
204
|
+
|
205
|
+
|
206
|
+
/*------------------------------------------------------------------------*
|
207
|
+
* Standard memory allocation *
|
208
|
+
*
|
209
|
+
* These specify the memory management functions that are used
|
210
|
+
* on all heap data except for Pix. Memory management for Pix
|
211
|
+
* also defaults to malloc and free. See pix1.c for details.
|
212
|
+
*------------------------------------------------------------------------*/
|
213
|
+
#define MALLOC(blocksize) malloc(blocksize)
|
214
|
+
#define CALLOC(numelem, elemsize) calloc(numelem, elemsize)
|
215
|
+
#define REALLOC(ptr, blocksize) realloc(ptr, blocksize)
|
216
|
+
#define FREE(ptr) free(ptr)
|
217
|
+
|
218
|
+
|
219
|
+
/*------------------------------------------------------------------------*
|
220
|
+
* Control printing of error, warning, and info messages *
|
221
|
+
* *
|
222
|
+
* (Use -DNO_CONSOLE_IO on compiler line to prevent text output) *
|
223
|
+
*------------------------------------------------------------------------*/
|
224
|
+
#ifdef NO_CONSOLE_IO
|
225
|
+
|
226
|
+
#define PROCNAME(name)
|
227
|
+
#define ERROR_PTR(a,b,c) ((void *)(c))
|
228
|
+
#define ERROR_INT(a,b,c) ((l_int32)(c))
|
229
|
+
#define ERROR_FLOAT(a,b,c) ((l_float32)(c))
|
230
|
+
#define L_ERROR(a,b)
|
231
|
+
#define L_ERROR_STRING(a,b,c)
|
232
|
+
#define L_ERROR_INT(a,b,c)
|
233
|
+
#define L_ERROR_FLOAT(a,b,c)
|
234
|
+
#define L_WARNING(a,b)
|
235
|
+
#define L_WARNING_STRING(a,b,c)
|
236
|
+
#define L_WARNING_INT(a,b,c)
|
237
|
+
#define L_WARNING_INT2(a,b,c,d)
|
238
|
+
#define L_WARNING_FLOAT(a,b,c)
|
239
|
+
#define L_WARNING_FLOAT2(a,b,c,d)
|
240
|
+
#define L_INFO(a,b)
|
241
|
+
#define L_INFO_STRING(a,b,c)
|
242
|
+
#define L_INFO_INT(a,b,c)
|
243
|
+
#define L_INFO_INT2(a,b,c,d)
|
244
|
+
#define L_INFO_FLOAT(a,b,c)
|
245
|
+
#define L_INFO_FLOAT2(a,b,c,d)
|
246
|
+
|
247
|
+
#else
|
248
|
+
|
249
|
+
#define PROCNAME(name) static const char procName[] = name
|
250
|
+
#define ERROR_PTR(a,b,c) returnErrorPtr((a),(b),(c))
|
251
|
+
#define ERROR_INT(a,b,c) returnErrorInt((a),(b),(c))
|
252
|
+
#define ERROR_FLOAT(a,b,c) returnErrorFloat((a),(b),(c))
|
253
|
+
#define L_ERROR(a,b) l_error((a),(b))
|
254
|
+
#define L_ERROR_STRING(a,b,c) l_errorString((a),(b),(c))
|
255
|
+
#define L_ERROR_INT(a,b,c) l_errorInt((a),(b),(c))
|
256
|
+
#define L_ERROR_FLOAT(a,b,c) l_errorFloat((a),(b),(c))
|
257
|
+
#define L_WARNING(a,b) l_warning((a),(b))
|
258
|
+
#define L_WARNING_STRING(a,b,c) l_warningString((a),(b),(c))
|
259
|
+
#define L_WARNING_INT(a,b,c) l_warningInt((a),(b),(c))
|
260
|
+
#define L_WARNING_INT2(a,b,c,d) l_warningInt2((a),(b),(c),(d))
|
261
|
+
#define L_WARNING_FLOAT(a,b,c) l_warningFloat((a),(b),(c))
|
262
|
+
#define L_WARNING_FLOAT2(a,b,c,d) l_warningFloat2((a),(b),(c),(d))
|
263
|
+
#define L_INFO(a,b) l_info((a),(b))
|
264
|
+
#define L_INFO_STRING(a,b,c) l_infoString((a),(b),(c))
|
265
|
+
#define L_INFO_INT(a,b,c) l_infoInt((a),(b),(c))
|
266
|
+
#define L_INFO_INT2(a,b,c,d) l_infoInt2((a),(b),(c),(d))
|
267
|
+
#define L_INFO_FLOAT(a,b,c) l_infoFloat((a),(b),(c))
|
268
|
+
#define L_INFO_FLOAT2(a,b,c,d) l_infoFloat2((a),(b),(c),(d))
|
269
|
+
|
270
|
+
#endif /* NO_CONSOLE_IO */
|
271
|
+
|
272
|
+
|
273
|
+
/*------------------------------------------------------------------------*
|
274
|
+
* snprintf() renamed in MSVC *
|
275
|
+
*------------------------------------------------------------------------*/
|
276
|
+
#ifdef _MSC_VER
|
277
|
+
#define snprintf(buf, size, ...) _snprintf_s(buf, size, _TRUNCATE, __VA_ARGS__)
|
278
|
+
#endif
|
279
|
+
|
280
|
+
|
281
|
+
#endif /* LEPTONICA_ENVIRON_H */
|