1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
/*====================================================================*
- Copyright (C) 2001 Leptonica. All rights reserved.
- This software is distributed in the hope that it will be
- useful, but with NO WARRANTY OF ANY KIND.
- No author or distributor accepts responsibility to anyone for the
- consequences of using this software, or for whether it serves any
- particular purpose or works at all, unless he or she says so in
- writing. Everyone is granted permission to copy, modify and
- redistribute this source code, for commercial or non-commercial
- purposes, with the following restrictions: (1) the origin of this
- source code must not be misrepresented; (2) modified versions must
- be plainly marked as such; and (3) this notice may not be removed
- or altered from any source or modified source distribution.
*====================================================================*/
/*
* colormorphtest.c
*/
#include <stdio.h>
#include <stdlib.h>
#include "allheaders.h"
static void pixCompare(PIX *pix, PIX *pix2, char *msg1, char *msg2);
static const l_int32 BUFSIZE = 256;
main(int argc,
char **argv)
{
char *filein;
char buf[BUFSIZE];
l_int32 size;
PIX *pixs, *pixt1, *pixt2;
static char mainName[] = "colormorphtest";
if (argc != 3)
exit(ERROR_INT(" Syntax: colormorphtest filein size",
mainName, 1));
filein = argv[1];
size = atoi(argv[2]);
if ((pixs = pixRead(filein)) == NULL)
exit(ERROR_INT("pixs not read", mainName, 1));
pixt1 = pixColorMorph(pixs, L_MORPH_DILATE, size, size);
sprintf(buf, "d%d.%d", size, size);
pixt2 = pixColorMorphSequence(pixs, buf, 0, 0);
pixCompare(pixt1, pixt2, "Correct for dilation", "Error on dilation");
pixDestroy(&pixt1);
pixDestroy(&pixt2);
pixt1 = pixColorMorph(pixs, L_MORPH_ERODE, size, size);
sprintf(buf, "e%d.%d", size, size);
pixt2 = pixColorMorphSequence(pixs, buf, 0, 0);
pixCompare(pixt1, pixt2, "Correct for erosion", "Error on erosion");
pixDestroy(&pixt1);
pixDestroy(&pixt2);
pixt1 = pixColorMorph(pixs, L_MORPH_OPEN, size, size);
sprintf(buf, "o%d.%d", size, size);
pixt2 = pixColorMorphSequence(pixs, buf, 0, 0);
pixCompare(pixt1, pixt2, "Correct for opening", "Error on opening");
pixDestroy(&pixt1);
pixDestroy(&pixt2);
pixt1 = pixColorMorph(pixs, L_MORPH_CLOSE, size, size);
sprintf(buf, "c%d.%d", size, size);
pixt2 = pixColorMorphSequence(pixs, buf, 0, 0);
pixCompare(pixt1, pixt2, "Correct for closing", "Error on closing");
pixDestroy(&pixt1);
pixDestroy(&pixt2);
system("/usr/bin/gthumb junk_write_display* &");
pixDestroy(&pixs);
return 0;
}
/* Simple comparison function */
static void pixCompare(PIX *pix1,
PIX *pix2,
char *msg1,
char *msg2)
{
l_int32 same;
pixEqual(pix1, pix2, &same);
if (same) {
fprintf(stderr, "%s\n", msg1);
pixDisplayWrite(pix1, 1);
}
else {
fprintf(stderr, "%s\n", msg2);
pixDisplayWrite(pix1, 1);
pixDisplayWrite(pix2, 1);
}
return;
}
|