camellia 2.7.0-x86-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CamelliaLib-2.7.0.tar.gz +0 -0
- data/README +59 -0
- data/doc/README +58 -0
- data/doc/camellia.dox +205 -0
- data/doc/html/annotated.html +52 -0
- data/doc/html/camellia_8h-source.html +1618 -0
- data/doc/html/camellia_8h.html +4583 -0
- data/doc/html/doxygen.css +358 -0
- data/doc/html/doxygen.png +0 -0
- data/doc/html/files.html +29 -0
- data/doc/html/ftv2blank.png +0 -0
- data/doc/html/ftv2doc.png +0 -0
- data/doc/html/ftv2folderclosed.png +0 -0
- data/doc/html/ftv2folderopen.png +0 -0
- data/doc/html/ftv2lastnode.png +0 -0
- data/doc/html/ftv2link.png +0 -0
- data/doc/html/ftv2mlastnode.png +0 -0
- data/doc/html/ftv2mnode.png +0 -0
- data/doc/html/ftv2node.png +0 -0
- data/doc/html/ftv2plastnode.png +0 -0
- data/doc/html/ftv2pnode.png +0 -0
- data/doc/html/ftv2vertline.png +0 -0
- data/doc/html/functions.html +108 -0
- data/doc/html/functions_0x62.html +78 -0
- data/doc/html/functions_0x63.html +112 -0
- data/doc/html/functions_0x64.html +113 -0
- data/doc/html/functions_0x65.html +102 -0
- data/doc/html/functions_0x66.html +82 -0
- data/doc/html/functions_0x67.html +76 -0
- data/doc/html/functions_0x68.html +88 -0
- data/doc/html/functions_0x69.html +90 -0
- data/doc/html/functions_0x6b.html +70 -0
- data/doc/html/functions_0x6c.html +88 -0
- data/doc/html/functions_0x6d.html +93 -0
- data/doc/html/functions_0x6e.html +79 -0
- data/doc/html/functions_0x6f.html +74 -0
- data/doc/html/functions_0x70.html +72 -0
- data/doc/html/functions_0x72.html +73 -0
- data/doc/html/functions_0x73.html +130 -0
- data/doc/html/functions_0x74.html +82 -0
- data/doc/html/functions_0x76.html +74 -0
- data/doc/html/functions_0x77.html +75 -0
- data/doc/html/functions_0x78.html +72 -0
- data/doc/html/functions_0x79.html +77 -0
- data/doc/html/functions_0x7e.html +76 -0
- data/doc/html/functions_func.html +93 -0
- data/doc/html/functions_func_0x62.html +64 -0
- data/doc/html/functions_func_0x63.html +83 -0
- data/doc/html/functions_func_0x64.html +99 -0
- data/doc/html/functions_func_0x65.html +95 -0
- data/doc/html/functions_func_0x66.html +74 -0
- data/doc/html/functions_func_0x67.html +72 -0
- data/doc/html/functions_func_0x68.html +76 -0
- data/doc/html/functions_func_0x69.html +70 -0
- data/doc/html/functions_func_0x6c.html +76 -0
- data/doc/html/functions_func_0x6d.html +78 -0
- data/doc/html/functions_func_0x6f.html +65 -0
- data/doc/html/functions_func_0x70.html +64 -0
- data/doc/html/functions_func_0x72.html +65 -0
- data/doc/html/functions_func_0x73.html +113 -0
- data/doc/html/functions_func_0x74.html +74 -0
- data/doc/html/functions_func_0x76.html +64 -0
- data/doc/html/functions_func_0x77.html +64 -0
- data/doc/html/functions_func_0x7e.html +72 -0
- data/doc/html/functions_vars.html +290 -0
- data/doc/html/globals.html +368 -0
- data/doc/html/globals_defs.html +41 -0
- data/doc/html/globals_func.html +364 -0
- data/doc/html/index.html +11 -0
- data/doc/html/main.html +22 -0
- data/doc/html/pages.html +24 -0
- data/doc/html/structCamAffineTransform.html +37 -0
- data/doc/html/structCamArithmParams.html +60 -0
- data/doc/html/structCamBasin.html +62 -0
- data/doc/html/structCamBitmapFont.html +37 -0
- data/doc/html/structCamBlobInfo.html +90 -0
- data/doc/html/structCamBlobs.html +51 -0
- data/doc/html/structCamImage.html +853 -0
- data/doc/html/structCamKeypoint.html +79 -0
- data/doc/html/structCamKeypoints.html +99 -0
- data/doc/html/structCamKeypointsKdTree.html +42 -0
- data/doc/html/structCamKeypointsMatches.html +54 -0
- data/doc/html/structCamLabelingResults.html +46 -0
- data/doc/html/structCamLinearFilterKernel.html +63 -0
- data/doc/html/structCamMeasuresResults.html +54 -0
- data/doc/html/structCamMorphoMathsKernel.html +81 -0
- data/doc/html/structCamPoint.html +46 -0
- data/doc/html/structCamRLEImage.html +183 -0
- data/doc/html/structCamROI.html +80 -0
- data/doc/html/structCamRun.html +56 -0
- data/doc/html/structCamSepFilterKernel.html +67 -0
- data/doc/html/structCamTable.html +46 -0
- data/doc/html/structCamTableOfBasins.html +37 -0
- data/doc/html/structCamVolbergFwdParams.html +46 -0
- data/doc/html/structCamWarpingParams.html +70 -0
- data/doc/html/tab_b.gif +0 -0
- data/doc/html/tab_l.gif +0 -0
- data/doc/html/tab_r.gif +0 -0
- data/doc/html/tabs.css +102 -0
- data/doc/html/todo.html +29 -0
- data/doc/html/tree.html +106 -0
- data/doc/rtf/refman.rtf +7866 -0
- data/ext/Makefile +149 -0
- data/ext/README +12 -0
- data/ext/camellia_ruby.i +493 -0
- data/ext/camellia_ruby_wrap.cxx +21103 -0
- data/ext/extconf.rb +12 -0
- data/ext/install.rb +11 -0
- data/ext/swig_ruby.dsp +159 -0
- data/ext/swig_ruby.vcproj +290 -0
- data/ext/test.rb +31 -0
- data/inc/SHLWAPI.H +661 -0
- data/inc/cam_capture.h +202 -0
- data/inc/camellia.h +2651 -0
- data/inc/camellia_internals.h +205 -0
- data/inc/config.h +62 -0
- data/inc/config.h.in +61 -0
- data/inc/stamp-h1 +1 -0
- data/lib/camellia-fox.rb +39 -0
- data/test/test_arithm.rb +13 -0
- data/test/test_capture.rb +15 -0
- data/test/test_color_labeling.rb +45 -0
- data/test/test_copy.rb +13 -0
- data/test/test_draw.rb +15 -0
- data/test/test_fixed_filters.rb +23 -0
- data/test/test_fox.rb +106 -0
- data/test/test_fox2.rb +108 -0
- data/test/test_histogram.rb +18 -0
- data/test/test_hough.rb +29 -0
- data/test/test_keypoints.rb +106 -0
- data/test/test_labeling.rb +30 -0
- data/test/test_mask.rb +34 -0
- data/test/test_warping.rb +46 -0
- data/test/test_watershed.rb +35 -0
- data/test/ts_camellia.rb +12 -0
- metadata +204 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/** \file camellia_internals.h
|
|
2
|
+
* \brief Camellia Image Processing Library header file
|
|
3
|
+
* \author Bruno STEUX (ENSMP)
|
|
4
|
+
*
|
|
5
|
+
* Camellia Image Processing Library
|
|
6
|
+
*
|
|
7
|
+
|
|
8
|
+
The Camellia Image Processing Library is an open source low-level image processing library.
|
|
9
|
+
As it uses the IplImage structure to describe images, it is a good replacement to the IPL (Intel) library
|
|
10
|
+
and a good complement to the OpenCV library. It includes a lot of functions for image processing
|
|
11
|
+
(filtering, morphological mathematics, labeling, warping, loading/saving images, etc.),
|
|
12
|
+
some of them being highly optimized; It is also cross-platform and robust. It is doxygen-documented
|
|
13
|
+
and examples of use are provided.
|
|
14
|
+
|
|
15
|
+
This software library is an outcome of the Camellia european project (IST-2001-34410).
|
|
16
|
+
It was developped by the Ecole des Mines de Paris (ENSMP), in coordination with
|
|
17
|
+
the other partners of the project.
|
|
18
|
+
|
|
19
|
+
==========================================================================
|
|
20
|
+
|
|
21
|
+
Copyright (c) 2002-2007, Ecole des Mines de Paris - Centre de Robotique
|
|
22
|
+
All rights reserved.
|
|
23
|
+
|
|
24
|
+
Redistribution and use in source and binary forms, with or without
|
|
25
|
+
modification, are permitted provided that the following conditions are met:
|
|
26
|
+
|
|
27
|
+
* Redistributions of source code must retain the above copyright
|
|
28
|
+
notice, this list of conditions and the following disclaimer.
|
|
29
|
+
* Redistributions in binary form must reproduce the above copyright
|
|
30
|
+
notice, this list of conditions and the following disclaimer
|
|
31
|
+
in the documentation and/or other materials provided with the distribution.
|
|
32
|
+
* Neither the name of the Ecole des Mines de Paris nor the names of
|
|
33
|
+
its contributors may be used to endorse or promote products
|
|
34
|
+
derived from this software without specific prior written permission.
|
|
35
|
+
|
|
36
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
37
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
38
|
+
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
39
|
+
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
40
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
41
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
42
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
43
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
44
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
45
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
46
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
47
|
+
|
|
48
|
+
==========================================================================
|
|
49
|
+
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
#ifndef _CAMELLIA_INTERNALS_H_
|
|
53
|
+
#define _CAMELLIA_INTERNALS_H_
|
|
54
|
+
|
|
55
|
+
#ifdef __cplusplus
|
|
56
|
+
extern "C" {
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
// Binary images management
|
|
60
|
+
#ifdef CAM_64BITS
|
|
61
|
+
#ifdef _WIN32
|
|
62
|
+
#define CAM_BIT_BLOCK unsigned __int64
|
|
63
|
+
#else
|
|
64
|
+
#define CAM_BIT_BLOCK unsigned long long int
|
|
65
|
+
#endif
|
|
66
|
+
#define CAM_BIT_BLOCK_SIZE_SHIFT 6
|
|
67
|
+
#ifndef CAM_BIG_ENDIAN
|
|
68
|
+
#ifdef _WIN32
|
|
69
|
+
#define CAM_BIT_BLOCK_SWAP(x) ( \
|
|
70
|
+
(((x)&0x00000000000000ffi64)<<56)| \
|
|
71
|
+
(((x)&0x000000000000ff00i64)<<40)| \
|
|
72
|
+
(((x)&0x0000000000ff0000i64)<<24)| \
|
|
73
|
+
(((x)&0x00000000ff000000i64)<< 8)| \
|
|
74
|
+
(((x)&0x000000ff00000000i64)>> 8)| \
|
|
75
|
+
(((x)&0x0000ff0000000000i64)>>24)| \
|
|
76
|
+
(((x)&0x00ff000000000000i64)>>40)| \
|
|
77
|
+
(((x)&0xff00000000000000i64)>>56))
|
|
78
|
+
#else
|
|
79
|
+
#define CAM_BIT_BLOCK_SWAP(x) ( \
|
|
80
|
+
(((x)&0x00000000000000ffull)<<56)| \
|
|
81
|
+
(((x)&0x000000000000ff00ull)<<40)| \
|
|
82
|
+
(((x)&0x0000000000ff0000ull)<<24)| \
|
|
83
|
+
(((x)&0x00000000ff000000ull)<< 8)| \
|
|
84
|
+
(((x)&0x000000ff00000000ull)>> 8)| \
|
|
85
|
+
(((x)&0x0000ff0000000000ull)>>24)| \
|
|
86
|
+
(((x)&0x00ff000000000000ull)>>40)| \
|
|
87
|
+
(((x)&0xff00000000000000ull)>>56))
|
|
88
|
+
#endif //_WIN32
|
|
89
|
+
#else
|
|
90
|
+
#define CAM_BIT_BLOCK_SWAP(x) (x)
|
|
91
|
+
#endif
|
|
92
|
+
#else
|
|
93
|
+
#define CAM_BIT_BLOCK unsigned int
|
|
94
|
+
#define CAM_BIT_BLOCK_SIZE_SHIFT 5
|
|
95
|
+
#ifndef CAM_BIG_ENDIAN
|
|
96
|
+
#define CAM_BIT_BLOCK_SWAP(x) ((((x)&0x000000ff)<<24)|(((x)&0x0000ff00)<<8)|(((x)&0x00ff0000)>>8)|(((x)&0xff000000)>>24))
|
|
97
|
+
#else
|
|
98
|
+
#define CAM_BIT_BLOCK_SWAP(x) (x)
|
|
99
|
+
#endif
|
|
100
|
+
#endif
|
|
101
|
+
#define CAM_BIT_BLOCK_SIZE (sizeof(CAM_BIT_BLOCK)*8)
|
|
102
|
+
|
|
103
|
+
// Internal functions
|
|
104
|
+
typedef struct {
|
|
105
|
+
unsigned char *srcptr;
|
|
106
|
+
unsigned char *dstptr;
|
|
107
|
+
CamROI srcroi; // Source ROI after clipping
|
|
108
|
+
CamROI dstroi; // Dest ROI after clipping
|
|
109
|
+
int srcchoffset; // Channel offset for the source
|
|
110
|
+
int dstchoffset; // Channel offset for the destination image
|
|
111
|
+
int nChannels; // Number of effective channels (considering ROIs)
|
|
112
|
+
int srcinc; // Pixel to pixel increment
|
|
113
|
+
int dstinc; // Pixel to pixel increment
|
|
114
|
+
int srclinc; // Line to line increment
|
|
115
|
+
int dstlinc; // Line to line increment
|
|
116
|
+
int srcpinc; // Plane to plane increment
|
|
117
|
+
int dstpinc; // Plane to plane increment
|
|
118
|
+
|
|
119
|
+
int mask_xOffset;// Offset when mask doesn't fit within image boundaries
|
|
120
|
+
int mask_yOffset;// Offset when mask doesn't fit within image boundaries
|
|
121
|
+
CamRLEImage *mask; // Mask to be applied to the operation
|
|
122
|
+
CamRLEImage auto_mask; // Automatically allocated if provided mask is not RLE
|
|
123
|
+
} CamInternalROIPolicyStruct;
|
|
124
|
+
|
|
125
|
+
#define CAM_MASK_SUPPORT 1
|
|
126
|
+
#define CAM_IGNORE_COI_MISMATCH 2
|
|
127
|
+
#define CAM_NO_ROI_INTERSECTION 4
|
|
128
|
+
|
|
129
|
+
int camInternalROIPolicy(CamImage* src, CamImage *dst, CamInternalROIPolicyStruct *res, int options);
|
|
130
|
+
void camInternalROIPolicyExit(CamInternalROIPolicyStruct *res); // Call to this function is necessary only when the caller manages image bit-masking
|
|
131
|
+
|
|
132
|
+
const char *camGetErrorStr();
|
|
133
|
+
void camSetErrorStr(const char *s);
|
|
134
|
+
|
|
135
|
+
// Check arguments
|
|
136
|
+
#ifndef CAM_OPTIMIZE
|
|
137
|
+
#define CAM_CHECK_ARGS(function, condition) \
|
|
138
|
+
if (!(condition)) {camError(#function, "Bad argument : " #condition);return 0;}
|
|
139
|
+
#else
|
|
140
|
+
#define CAM_CHECK_ARGS(function, condition)
|
|
141
|
+
#endif
|
|
142
|
+
|
|
143
|
+
#ifndef CAM_OPTIMIZE
|
|
144
|
+
#define CAM_CHECK_ARGS2(function, condition, text) \
|
|
145
|
+
if (!(condition)) {camError(#function, "Bad argument : " #text);return 0;}
|
|
146
|
+
#else
|
|
147
|
+
#define CAM_CHECK_ARGS2(function, condition, text)
|
|
148
|
+
#endif
|
|
149
|
+
|
|
150
|
+
#ifndef CAM_OPTIMIZE
|
|
151
|
+
#define CAM_CHECK(function, condition) \
|
|
152
|
+
if (!(condition)) {camError(#function, NULL);return 0;}
|
|
153
|
+
#else
|
|
154
|
+
#define CAM_CHECK(function, condition)
|
|
155
|
+
#endif
|
|
156
|
+
|
|
157
|
+
// Mask management macros
|
|
158
|
+
|
|
159
|
+
#define DECLARE_MASK_MANAGEMENT \
|
|
160
|
+
CamRun *run; \
|
|
161
|
+
int startx,endx
|
|
162
|
+
|
|
163
|
+
#define INIT_MASK_MANAGEMENT \
|
|
164
|
+
if (iROI.mask) { \
|
|
165
|
+
run=iROI.mask->runs+1; \
|
|
166
|
+
while (run->line!=iROI.mask_yOffset) run++; \
|
|
167
|
+
} else { \
|
|
168
|
+
run=NULL; \
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
#define BEGIN_MASK_MANAGEMENT(code) \
|
|
172
|
+
startx=-iROI.mask_xOffset; \
|
|
173
|
+
do { \
|
|
174
|
+
if (!iROI.mask) { \
|
|
175
|
+
endx=width; \
|
|
176
|
+
} else { \
|
|
177
|
+
do { \
|
|
178
|
+
while ((run->value==0)&&(run->line==y+iROI.mask_yOffset)) { \
|
|
179
|
+
startx+=run->length; \
|
|
180
|
+
run++; \
|
|
181
|
+
} \
|
|
182
|
+
if (run->line!=y+iROI.mask_yOffset) break; \
|
|
183
|
+
endx=startx+run->length; \
|
|
184
|
+
} while ((endx<=0)&&(run++)); \
|
|
185
|
+
if (run->line!=y+iROI.mask_yOffset) break; \
|
|
186
|
+
if (startx<0) startx=0; \
|
|
187
|
+
if (startx>width) startx=width; \
|
|
188
|
+
if (endx>width) endx=width; \
|
|
189
|
+
code \
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
#define END_MASK_MANAGEMENT \
|
|
193
|
+
if (iROI.mask) { \
|
|
194
|
+
startx=endx; \
|
|
195
|
+
run++; \
|
|
196
|
+
} \
|
|
197
|
+
} while ((run)&&(run->line==y+iROI.mask_yOffset));
|
|
198
|
+
|
|
199
|
+
#ifdef __cplusplus
|
|
200
|
+
}
|
|
201
|
+
#endif
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
#endif
|
|
205
|
+
|
data/inc/config.h
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/* inc/config.h. Generated from config.h.in by configure. */
|
|
2
|
+
/* inc/config.h.in. Generated from configure.in by autoheader. */
|
|
3
|
+
|
|
4
|
+
/* Define to 1 if you have the <dlfcn.h> header file. */
|
|
5
|
+
#define HAVE_DLFCN_H 1
|
|
6
|
+
|
|
7
|
+
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
8
|
+
#define HAVE_INTTYPES_H 1
|
|
9
|
+
|
|
10
|
+
/* Define to 1 if you have the `m' library (-lm). */
|
|
11
|
+
#define HAVE_LIBM 1
|
|
12
|
+
|
|
13
|
+
/* Define to 1 if you have the <linux/videodev.h> header file. */
|
|
14
|
+
#define HAVE_LINUX_VIDEODEV_H 1
|
|
15
|
+
|
|
16
|
+
/* Define to 1 if you have the <memory.h> header file. */
|
|
17
|
+
#define HAVE_MEMORY_H 1
|
|
18
|
+
|
|
19
|
+
/* Define to 1 if you have the <stdint.h> header file. */
|
|
20
|
+
#define HAVE_STDINT_H 1
|
|
21
|
+
|
|
22
|
+
/* Define to 1 if you have the <stdlib.h> header file. */
|
|
23
|
+
#define HAVE_STDLIB_H 1
|
|
24
|
+
|
|
25
|
+
/* Define to 1 if you have the <strings.h> header file. */
|
|
26
|
+
#define HAVE_STRINGS_H 1
|
|
27
|
+
|
|
28
|
+
/* Define to 1 if you have the <string.h> header file. */
|
|
29
|
+
#define HAVE_STRING_H 1
|
|
30
|
+
|
|
31
|
+
/* Define to 1 if you have the <sys/stat.h> header file. */
|
|
32
|
+
#define HAVE_SYS_STAT_H 1
|
|
33
|
+
|
|
34
|
+
/* Define to 1 if you have the <sys/types.h> header file. */
|
|
35
|
+
#define HAVE_SYS_TYPES_H 1
|
|
36
|
+
|
|
37
|
+
/* Define to 1 if you have the <unistd.h> header file. */
|
|
38
|
+
#define HAVE_UNISTD_H 1
|
|
39
|
+
|
|
40
|
+
/* Name of package */
|
|
41
|
+
#define PACKAGE "CamelliaLib"
|
|
42
|
+
|
|
43
|
+
/* Define to the address where bug reports for this package should be sent. */
|
|
44
|
+
#define PACKAGE_BUGREPORT ""
|
|
45
|
+
|
|
46
|
+
/* Define to the full name of this package. */
|
|
47
|
+
#define PACKAGE_NAME ""
|
|
48
|
+
|
|
49
|
+
/* Define to the full name and version of this package. */
|
|
50
|
+
#define PACKAGE_STRING ""
|
|
51
|
+
|
|
52
|
+
/* Define to the one symbol short name of this package. */
|
|
53
|
+
#define PACKAGE_TARNAME ""
|
|
54
|
+
|
|
55
|
+
/* Define to the version of this package. */
|
|
56
|
+
#define PACKAGE_VERSION ""
|
|
57
|
+
|
|
58
|
+
/* Define to 1 if you have the ANSI C header files. */
|
|
59
|
+
#define STDC_HEADERS 1
|
|
60
|
+
|
|
61
|
+
/* Version number of package */
|
|
62
|
+
#define VERSION "2.7.0"
|
data/inc/config.h.in
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/* inc/config.h.in. Generated from configure.in by autoheader. */
|
|
2
|
+
|
|
3
|
+
/* Define to 1 if you have the <dlfcn.h> header file. */
|
|
4
|
+
#undef HAVE_DLFCN_H
|
|
5
|
+
|
|
6
|
+
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
7
|
+
#undef HAVE_INTTYPES_H
|
|
8
|
+
|
|
9
|
+
/* Define to 1 if you have the `m' library (-lm). */
|
|
10
|
+
#undef HAVE_LIBM
|
|
11
|
+
|
|
12
|
+
/* Define to 1 if you have the <linux/videodev.h> header file. */
|
|
13
|
+
#undef HAVE_LINUX_VIDEODEV_H
|
|
14
|
+
|
|
15
|
+
/* Define to 1 if you have the <memory.h> header file. */
|
|
16
|
+
#undef HAVE_MEMORY_H
|
|
17
|
+
|
|
18
|
+
/* Define to 1 if you have the <stdint.h> header file. */
|
|
19
|
+
#undef HAVE_STDINT_H
|
|
20
|
+
|
|
21
|
+
/* Define to 1 if you have the <stdlib.h> header file. */
|
|
22
|
+
#undef HAVE_STDLIB_H
|
|
23
|
+
|
|
24
|
+
/* Define to 1 if you have the <strings.h> header file. */
|
|
25
|
+
#undef HAVE_STRINGS_H
|
|
26
|
+
|
|
27
|
+
/* Define to 1 if you have the <string.h> header file. */
|
|
28
|
+
#undef HAVE_STRING_H
|
|
29
|
+
|
|
30
|
+
/* Define to 1 if you have the <sys/stat.h> header file. */
|
|
31
|
+
#undef HAVE_SYS_STAT_H
|
|
32
|
+
|
|
33
|
+
/* Define to 1 if you have the <sys/types.h> header file. */
|
|
34
|
+
#undef HAVE_SYS_TYPES_H
|
|
35
|
+
|
|
36
|
+
/* Define to 1 if you have the <unistd.h> header file. */
|
|
37
|
+
#undef HAVE_UNISTD_H
|
|
38
|
+
|
|
39
|
+
/* Name of package */
|
|
40
|
+
#undef PACKAGE
|
|
41
|
+
|
|
42
|
+
/* Define to the address where bug reports for this package should be sent. */
|
|
43
|
+
#undef PACKAGE_BUGREPORT
|
|
44
|
+
|
|
45
|
+
/* Define to the full name of this package. */
|
|
46
|
+
#undef PACKAGE_NAME
|
|
47
|
+
|
|
48
|
+
/* Define to the full name and version of this package. */
|
|
49
|
+
#undef PACKAGE_STRING
|
|
50
|
+
|
|
51
|
+
/* Define to the one symbol short name of this package. */
|
|
52
|
+
#undef PACKAGE_TARNAME
|
|
53
|
+
|
|
54
|
+
/* Define to the version of this package. */
|
|
55
|
+
#undef PACKAGE_VERSION
|
|
56
|
+
|
|
57
|
+
/* Define to 1 if you have the ANSI C header files. */
|
|
58
|
+
#undef STDC_HEADERS
|
|
59
|
+
|
|
60
|
+
/* Version number of package */
|
|
61
|
+
#undef VERSION
|
data/inc/stamp-h1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
timestamp for inc/config.h
|
data/lib/camellia-fox.rb
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require_gem 'fxruby'
|
|
3
|
+
|
|
4
|
+
require 'camellia'
|
|
5
|
+
include Camellia
|
|
6
|
+
|
|
7
|
+
class Fox::FXImage
|
|
8
|
+
def to_camellia
|
|
9
|
+
s=FXStream.new
|
|
10
|
+
mem=" "*(width*height*4)
|
|
11
|
+
s.open(FXStreamSave, width*height*4, mem)
|
|
12
|
+
unbound_savePixels=FXImage.instance_method(:savePixels)
|
|
13
|
+
bound_savePixels=unbound_savePixels.bind(self)
|
|
14
|
+
bound_savePixels.call(s)
|
|
15
|
+
image=CamImage.new(width, height, CAM_DEPTH_8U, CAM_COLORMODEL_RGBA)
|
|
16
|
+
image.set_pixels(mem)
|
|
17
|
+
return image
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class Camellia::CamImage
|
|
22
|
+
def to_fox(app, picture=nil)
|
|
23
|
+
if picture==nil
|
|
24
|
+
pict=FXImage.new(app, nil, IMAGE_OWNED|IMAGE_KEEP, width, height)
|
|
25
|
+
else
|
|
26
|
+
pict=picture
|
|
27
|
+
end if
|
|
28
|
+
image=CamImage.new(width, height, CAM_DEPTH_8U, CAM_COLORMODEL_RGBA)
|
|
29
|
+
copy(image)
|
|
30
|
+
FXStream.new { |stream|
|
|
31
|
+
stream.open(FXStreamLoad, image.imageSize, image.to_s)
|
|
32
|
+
unbound_loadPixels=FXImage.instance_method(:loadPixels)
|
|
33
|
+
bound_loadPixels=unbound_loadPixels.bind(pict)
|
|
34
|
+
bound_loadPixels.call(stream)
|
|
35
|
+
}
|
|
36
|
+
return pict
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
data/test/test_arithm.rb
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'lib/camellia'
|
|
3
|
+
include Camellia
|
|
4
|
+
class TestArithm < Test::Unit::TestCase
|
|
5
|
+
def test_arithm
|
|
6
|
+
source=CamImage.new
|
|
7
|
+
# load picture chess.pgm
|
|
8
|
+
source.load_pgm("resources/chess.pgm")
|
|
9
|
+
n=source.arithm(source,source,CAM_SUB)
|
|
10
|
+
# resulting pixel sum should be 0
|
|
11
|
+
assert_equal(n,0)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'lib/camellia'
|
|
3
|
+
include Camellia
|
|
4
|
+
|
|
5
|
+
class TestCapture < Test::Unit::TestCase
|
|
6
|
+
def test_capture
|
|
7
|
+
image=CamImage.new
|
|
8
|
+
camera=CamCapture2.new
|
|
9
|
+
for i in 1..30 do
|
|
10
|
+
camera.capture(image)
|
|
11
|
+
puts "Grabbed image #{i}"
|
|
12
|
+
end
|
|
13
|
+
image.save_bmp('output/capture.bmp')
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'lib/camellia'
|
|
3
|
+
include Camellia
|
|
4
|
+
class TestLabeling < Test::Unit::TestCase
|
|
5
|
+
def test_labeling
|
|
6
|
+
|
|
7
|
+
# load picture alfa156.bmp
|
|
8
|
+
image=CamImage.new
|
|
9
|
+
image.load_bmp("resources/alfa156.bmp")
|
|
10
|
+
yuv=image.to_yuv
|
|
11
|
+
|
|
12
|
+
# set color clusters
|
|
13
|
+
clusters=CamTable.new
|
|
14
|
+
clusters.set([
|
|
15
|
+
# Ymin Ymax Umin Umax Vmin Vmax
|
|
16
|
+
0, 60, 0, 255, 0, 255, # Black
|
|
17
|
+
230, 255, 0, 255, 0, 255, # White
|
|
18
|
+
0, 255, 0, 255, 140, 255 # Red
|
|
19
|
+
])
|
|
20
|
+
cluster_colors=[cam_rgb(0,0,0),cam_rgb(255,255,255),cam_rgb(255,0,0)]
|
|
21
|
+
|
|
22
|
+
# threshold and encode
|
|
23
|
+
encoded=yuv.encode_color(clusters)
|
|
24
|
+
puts "Number of runs : #{encoded.nb_runs}"
|
|
25
|
+
|
|
26
|
+
# labeling
|
|
27
|
+
blobs=encoded.labeling!
|
|
28
|
+
puts "#{blobs.nb_blobs} blobs detected"
|
|
29
|
+
|
|
30
|
+
# print and deaw the results
|
|
31
|
+
i=0
|
|
32
|
+
blobs.each {|b|
|
|
33
|
+
puts "Blob #{i} : Val=#{b.value} (#{b.top},#{b.left},#{b.width},#{b.height}) Surface=#{b.surface}"
|
|
34
|
+
image.draw_rectangle(b.left,b.top,b.left+b.width-1,b.top+b.height-1,cluster_colors[b.value-1])
|
|
35
|
+
i=i+1
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
# save the result
|
|
39
|
+
image.save_bmp("output/ruby_alfa156_labeling.bmp")
|
|
40
|
+
|
|
41
|
+
# assertions
|
|
42
|
+
assert_equal(encoded.nb_runs,3026)
|
|
43
|
+
assert_equal(blobs.nb_blobs,190)
|
|
44
|
+
end
|
|
45
|
+
end
|