MCPcopy Create free account
hub / github.com/creatale/node-dv / pixMorphSequence

Function pixMorphSequence

deps/leptonica/src/morphseq.c:132–250  ·  view source on GitHub ↗

-------------------------------------------------------------------------* * Run a sequence of binary rasterop morphological operations * *-------------------------------------------------------------------------*/ ! * \brief pixMorphSequence() * * \param[in] pixs * \param[in] sequence string specifying sequence * \param[in] dispsep controls debug display of each res

Source from the content-addressed store, hash-verified

130 * </pre>
131 */
132PIX *
133pixMorphSequence(PIX *pixs,
134 const char *sequence,
135 l_int32 dispsep)
136{
137char *rawop, *op;
138char fname[256];
139l_int32 nops, i, j, nred, fact, w, h, x, border, pdfout;
140l_int32 level[4];
141PIX *pix1, *pix2;
142PIXA *pixa;
143SARRAY *sa;
144
145 PROCNAME("pixMorphSequence");
146
147 if (!pixs)
148 return (PIX *)ERROR_PTR("pixs not defined", procName, NULL);
149 if (!sequence)
150 return (PIX *)ERROR_PTR("sequence not defined", procName, NULL);
151
152 /* Split sequence into individual operations */
153 sa = sarrayCreate(0);
154 sarraySplitString(sa, sequence, "+");
155 nops = sarrayGetCount(sa);
156 pdfout = (dispsep < 0) ? 1 : 0;
157 if (!morphSequenceVerify(sa)) {
158 sarrayDestroy(&sa);
159 return (PIX *)ERROR_PTR("sequence not valid", procName, NULL);
160 }
161
162 /* Parse and operate */
163 pixa = NULL;
164 if (pdfout) {
165 pixa = pixaCreate(0);
166 pixaAddPix(pixa, pixs, L_CLONE);
167 }
168 border = 0;
169 pix1 = pixCopy(NULL, pixs);
170 pix2 = NULL;
171 x = 0;
172 for (i = 0; i < nops; i++) {
173 rawop = sarrayGetString(sa, i, L_NOCOPY);
174 op = stringRemoveChars(rawop, " \n\t");
175 switch (op[0])
176 {
177 case 'd':
178 case 'D':
179 sscanf(&op[1], "%d.%d", &w, &h);
180 pix2 = pixDilateBrick(NULL, pix1, w, h);
181 pixSwapAndDestroy(&pix1, &pix2);
182 break;
183 case 'e':
184 case 'E':
185 sscanf(&op[1], "%d.%d", &w, &h);
186 pix2 = pixErodeBrick(NULL, pix1, w, h);
187 pixSwapAndDestroy(&pix1, &pix2);
188 break;
189 case 'o':

Callers 15

pixColorsForQuantizationFunction · 0.85
ptaGetBoundaryPixelsFunction · 0.85
jbGetComponentsFunction · 0.85
pixWordMaskByDilationFunction · 0.85
pixItalicWordsFunction · 0.85
pixModifyStrokeWidthFunction · 0.85
pixSetStrokeWidthFunction · 0.85
pixGenTextblockMaskFunction · 0.85
pixFindPageForegroundFunction · 0.85
pixSplitIntoCharactersFunction · 0.85
pixDecideIfTableFunction · 0.85
recogProcessLabeledFunction · 0.85

Calls 15

sarrayCreateFunction · 0.85
sarraySplitStringFunction · 0.85
sarrayGetCountFunction · 0.85
morphSequenceVerifyFunction · 0.85
sarrayDestroyFunction · 0.85
pixaCreateFunction · 0.85
pixaAddPixFunction · 0.85
pixCopyFunction · 0.85
sarrayGetStringFunction · 0.85
stringRemoveCharsFunction · 0.85
pixDilateBrickFunction · 0.85
pixSwapAndDestroyFunction · 0.85

Tested by

no test coverage detected