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

Function pixMorphSequenceDwa

deps/leptonica/src/morphseq.c:448–567  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

446 * </pre>
447 */
448PIX *
449pixMorphSequenceDwa(PIX *pixs,
450 const char *sequence,
451 l_int32 dispsep)
452{
453char *rawop, *op;
454char fname[256];
455l_int32 nops, i, j, nred, fact, w, h, x, border, pdfout;
456l_int32 level[4];
457PIX *pix1, *pix2;
458PIXA *pixa;
459SARRAY *sa;
460
461 PROCNAME("pixMorphSequenceDwa");
462
463 if (!pixs)
464 return (PIX *)ERROR_PTR("pixs not defined", procName, NULL);
465 if (!sequence)
466 return (PIX *)ERROR_PTR("sequence not defined", procName, NULL);
467
468 /* Split sequence into individual operations */
469 sa = sarrayCreate(0);
470 sarraySplitString(sa, sequence, "+");
471 nops = sarrayGetCount(sa);
472 pdfout = (dispsep < 0) ? 1 : 0;
473
474 if (!morphSequenceVerify(sa)) {
475 sarrayDestroy(&sa);
476 return (PIX *)ERROR_PTR("sequence not valid", procName, NULL);
477 }
478
479 /* Parse and operate */
480 pixa = NULL;
481 if (pdfout) {
482 pixa = pixaCreate(0);
483 pixaAddPix(pixa, pixs, L_CLONE);
484 }
485 border = 0;
486 pix1 = pixCopy(NULL, pixs);
487 pix2 = NULL;
488 x = 0;
489 for (i = 0; i < nops; i++) {
490 rawop = sarrayGetString(sa, i, L_NOCOPY);
491 op = stringRemoveChars(rawop, " \n\t");
492 switch (op[0])
493 {
494 case 'd':
495 case 'D':
496 sscanf(&op[1], "%d.%d", &w, &h);
497 pix2 = pixDilateBrickDwa(NULL, pix1, w, h);
498 pixSwapAndDestroy(&pix1, &pix2);
499 break;
500 case 'e':
501 case 'E':
502 sscanf(&op[1], "%d.%d", &w, &h);
503 pix2 = pixErodeBrickDwa(NULL, pix1, w, h);
504 pixSwapAndDestroy(&pix1, &pix2);
505 break;

Callers 2

pixMirrorDetectDwaFunction · 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
pixDilateBrickDwaFunction · 0.85
pixSwapAndDestroyFunction · 0.85

Tested by

no test coverage detected