本文整理汇总了C++中pixDestroy函数的典型用法代码示例。如果您正苦于以下问题:C++ pixDestroy函数的具体用法?C++ pixDestroy怎么用?C++ pixDestroy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pixDestroy函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: main
main(int argc,
char **argv)
{
BOX *box;
PIX *pix, *pixs, *pixd, *pixt;
PIXA *pixa;
SEL *sel, *sel1, *sel2, *sel3;
SELA *sela4, *sela8, *sela48;
static char mainName[] = "ccthin1_reg";
if (argc != 1)
exit(ERROR_INT(" Syntax: ccthin1_reg", mainName, 1));
/* Generate and display all of the 4-cc sels */
sela4 = selaCreate(9);
sel = selCreateFromString(sel_4_1, 3, 3, "sel_4_1");
selaAddSel(sela4, sel, NULL, 0);
sel = selCreateFromString(sel_4_2, 3, 3, "sel_4_2");
selaAddSel(sela4, sel, NULL, 0);
sel = selCreateFromString(sel_4_3, 3, 3, "sel_4_3");
selaAddSel(sela4, sel, NULL, 0);
sel = selCreateFromString(sel_4_4, 3, 3, "sel_4_4");
selaAddSel(sela4, sel, NULL, 0);
sel = selCreateFromString(sel_4_5, 3, 3, "sel_4_5");
selaAddSel(sela4, sel, NULL, 0);
sel = selCreateFromString(sel_4_6, 3, 3, "sel_4_6");
selaAddSel(sela4, sel, NULL, 0);
sel = selCreateFromString(sel_4_7, 3, 3, "sel_4_7");
selaAddSel(sela4, sel, NULL, 0);
sel = selCreateFromString(sel_4_8, 3, 3, "sel_4_8");
selaAddSel(sela4, sel, NULL, 0);
sel = selCreateFromString(sel_4_9, 3, 3, "sel_4_9");
selaAddSel(sela4, sel, NULL, 0);
pixt = selaDisplayInPix(sela4, 35, 3, 15, 3);
pixWrite("/tmp/junkallsel4.png", pixt, IFF_PNG);
pixDestroy(&pixt);
selaDestroy(&sela4);
/* Generate and display all of the 8-cc sels */
sela8 = selaCreate(9);
sel = selCreateFromString(sel_8_1, 3, 3, "sel_8_1");
selaAddSel(sela8, sel, NULL, 0);
sel = selCreateFromString(sel_8_2, 3, 3, "sel_8_2");
selaAddSel(sela8, sel, NULL, 0);
sel = selCreateFromString(sel_8_3, 3, 3, "sel_8_3");
selaAddSel(sela8, sel, NULL, 0);
sel = selCreateFromString(sel_8_4, 3, 3, "sel_8_4");
selaAddSel(sela8, sel, NULL, 0);
sel = selCreateFromString(sel_8_5, 3, 3, "sel_8_5");
selaAddSel(sela8, sel, NULL, 0);
sel = selCreateFromString(sel_8_6, 3, 3, "sel_8_6");
selaAddSel(sela8, sel, NULL, 0);
sel = selCreateFromString(sel_8_7, 3, 3, "sel_8_7");
selaAddSel(sela8, sel, NULL, 0);
sel = selCreateFromString(sel_8_8, 3, 3, "sel_8_8");
selaAddSel(sela8, sel, NULL, 0);
sel = selCreateFromString(sel_8_9, 3, 3, "sel_8_9");
selaAddSel(sela8, sel, NULL, 0);
pixt = selaDisplayInPix(sela8, 35, 3, 15, 3);
pixWrite("/tmp/junkallsel8.png", pixt, IFF_PNG);
pixDestroy(&pixt);
selaDestroy(&sela8);
/* Generate and display all of the 4 and 8-cc preserving sels */
sela48 = selaCreate(3);
sel = selCreateFromString(sel_48_1, 3, 3, "sel_48_1");
selaAddSel(sela48, sel, NULL, 0);
sel = selCreateFromString(sel_48_2, 3, 3, "sel_48_2");
selaAddSel(sela48, sel, NULL, 0);
pixt = selaDisplayInPix(sela48, 35, 3, 15, 4);
pixWrite("/tmp/junkallsel48.png", pixt, IFF_PNG);
pixDestroy(&pixt);
selaDestroy(&sela48);
/* Generate and display three of the 4-cc sels and their rotations */
sela4 = selaCreate(3);
sel = selCreateFromString(sel_4_1, 3, 3, "sel_4_1");
sel1 = selRotateOrth(sel, 1);
sel2 = selRotateOrth(sel, 2);
sel3 = selRotateOrth(sel, 3);
selaAddSel(sela4, sel, NULL, 0);
selaAddSel(sela4, sel1, "sel_4_1_90", 0);
selaAddSel(sela4, sel2, "sel_4_1_180", 0);
selaAddSel(sela4, sel3, "sel_4_1_270", 0);
sel = selCreateFromString(sel_4_2, 3, 3, "sel_4_2");
sel1 = selRotateOrth(sel, 1);
sel2 = selRotateOrth(sel, 2);
sel3 = selRotateOrth(sel, 3);
selaAddSel(sela4, sel, NULL, 0);
selaAddSel(sela4, sel1, "sel_4_2_90", 0);
selaAddSel(sela4, sel2, "sel_4_2_180", 0);
selaAddSel(sela4, sel3, "sel_4_2_270", 0);
sel = selCreateFromString(sel_4_3, 3, 3, "sel_4_3");
sel1 = selRotateOrth(sel, 1);
sel2 = selRotateOrth(sel, 2);
sel3 = selRotateOrth(sel, 3);
selaAddSel(sela4, sel, NULL, 0);
selaAddSel(sela4, sel1, "sel_4_3_90", 0);
selaAddSel(sela4, sel2, "sel_4_3_180", 0);
selaAddSel(sela4, sel3, "sel_4_3_270", 0);
//.........这里部分代码省略.........
开发者ID:0359xiaodong,项目名称:tess-two,代码行数:101,代码来源:ccthin1_reg.c
示例2: main
int main(int argc,
char **argv)
{
char buf[8];
l_int32 i, n, h;
l_float32 scalefact;
BOXA *boxa;
PIX *pixs, *pix, *pixt1, *pixt2;
PIXA *pixa, *pixas, *pixad;
PIXAA *pixaa;
static char mainName[] = "digitprep1";
if (argc != 1) {
ERROR_INT(" Syntax: digitprep1", mainName, 1);
return 1;
}
if ((pixs = pixRead("barcode-digits.png")) == NULL)
return ERROR_INT("pixs not read", mainName, 1);
/* Extract the digits and scale to HEIGHT */
boxa = pixConnComp(pixs, &pixa, 8);
pixas = pixaSort(pixa, L_SORT_BY_X, L_SORT_INCREASING, NULL, L_CLONE);
n = pixaGetCount(pixas);
/* Move the last ("0") to the first position */
pixt1 = pixaGetPix(pixas, n - 1, L_CLONE);
pixaInsertPix(pixas, 0, pixt1, NULL);
pixaRemovePix(pixas, n);
/* Make the output scaled pixa */
pixad = pixaCreate(n);
for (i = 0; i < n; i++) {
pixt1 = pixaGetPix(pixas, i, L_CLONE);
pixGetDimensions(pixt1, NULL, &h, NULL);
scalefact = HEIGHT / (l_float32)h;
pixt2 = pixScale(pixt1, scalefact, scalefact);
if (pixGetHeight(pixt2) != 32)
return ERROR_INT("height not 32!", mainName, 1);
sprintf(buf, "%d", i);
pixSetText(pixt2, buf);
pixaAddPix(pixad, pixt2, L_INSERT);
pixDestroy(&pixt1);
}
/* Save in a pixaa, with 1 pix in each pixa */
pixaa = pixaaCreateFromPixa(pixad, 1, L_CHOOSE_CONSECUTIVE, L_CLONE);
pixaaWrite("junkdigits.pixaa", pixaa);
/* Show result */
pixt1 = pixaaDisplayByPixa(pixaa, 20, 20, 1000);
pixDisplay(pixt1, 100, 100);
pixDestroy(&pixt1);
boxaDestroy(&boxa);
pixaDestroy(&pixa);
pixaDestroy(&pixas);
pixaDestroy(&pixad);
pixaaDestroy(&pixaa);
return 0;
}
开发者ID:11110101,项目名称:tess-two,代码行数:61,代码来源:digitprep1.c
示例3: main
main(int argc,
char **argv)
{
l_int32 index, maxiters, type;
BOX *box;
PIX *pix, *pixs, *pixd, *pixt;
PIXA *pixa;
static char mainName[] = "ccthin2_reg";
if (argc != 1 && argc != 3)
exit(ERROR_INT(" Syntax: ccthin2_reg [index maxiters]", mainName, 1));
pixDisplayWrite(NULL, 0);
if ((pix = pixRead("feyn.tif")) == NULL)
exit(ERROR_INT("pix not made", mainName, 1));
box = boxCreate(683, 799, 970, 479);
pixs = pixClipRectangle(pix, box, NULL);
pixDisplayWrite(pixs, 1);
/* Just do one of the examples */
if (argc == 3) {
index = atoi(argv[1]);
maxiters = atoi(argv[2]);
if (index <= 7)
type = L_THIN_FG;
else
type = L_THIN_BG;
pixt = pixThinExamples(pixs, type, index, maxiters,
"/tmp/junksels.png");
pixDisplay(pixt, 100, 100);
pixDisplayWrite(pixt, 1);
pixDestroy(&pixt);
pixDisplayMultiple("/tmp/junk_write_display*");
return 0;
}
/* Do all the examples */
pixt = pixThinExamples(pixs, L_THIN_FG, 1, 0, "/tmp/junksel_example1.png");
pixDisplayWrite(pixt, 1);
pixDestroy(&pixt);
pixt = pixThinExamples(pixs, L_THIN_FG, 2, 0, "/tmp/junksel_example2.png");
pixDisplayWrite(pixt, 1);
pixDestroy(&pixt);
pixt = pixThinExamples(pixs, L_THIN_FG, 3, 0, "/tmp/junksel_example3.png");
pixDisplayWrite(pixt, 1);
pixDestroy(&pixt);
pixt = pixThinExamples(pixs, L_THIN_FG, 4, 0, "/tmp/junksel_example4.png");
pixDisplayWrite(pixt, 1);
pixDestroy(&pixt);
pixt = pixThinExamples(pixs, L_THIN_FG, 5, 0, "/tmp/junksel_example5.png");
pixDisplayWrite(pixt, 1);
pixDestroy(&pixt);
pixt = pixThinExamples(pixs, L_THIN_FG, 6, 0, "/tmp/junksel_example6.png");
pixDisplayWrite(pixt, 1);
pixDestroy(&pixt);
pixt = pixThinExamples(pixs, L_THIN_FG, 7, 0, "/tmp/junksel_example7.png");
pixDisplayWrite(pixt, 1);
pixDestroy(&pixt);
pixt = pixThinExamples(pixs, L_THIN_BG, 8, 5, "/tmp/junksel_example8.png");
pixDisplayWrite(pixt, 1);
pixDestroy(&pixt);
pixt = pixThinExamples(pixs, L_THIN_BG, 9, 5, "/tmp/junksel_example9.png");
pixDisplayWrite(pixt, 1);
pixDestroy(&pixt);
/* Display the thinning results */
pixa = pixaReadFiles("/tmp", "junk_write_display");
pixd = pixaDisplayTiledAndScaled(pixa, 8, 500, 1, 0, 25, 2);
pixWrite("/tmp/junktiles.jpg", pixd, IFF_JFIF_JPEG);
pixDestroy(&pixd);
pixaDestroy(&pixa);
/* Display the sels used in the examples */
pixa = pixaReadFiles("/tmp", "junksel_example");
pixd = pixaDisplayTiledInRows(pixa, 1, 500, 1.0, 0, 50, 2);
pixWrite("/tmp/junksels.png", pixd, IFF_PNG);
pixDestroy(&pixd);
pixaDestroy(&pixa);
pixDestroy(&pix);
pixDestroy(&pixs);
boxDestroy(&box);
pixDisplayMultiple("/tmp/junk_write_display*");
return 0;
}
开发者ID:0359xiaodong,项目名称:tess-two,代码行数:86,代码来源:ccthin2_reg.c
示例4: pixItalicWords
//.........这里部分代码省略.........
* matches sel_ital1. */
pixsd = pixHMT(NULL, pixs, sel_ital1);
pixClose(pixsd, pixsd, sel_ital3);
pixOpen(pixsd, pixsd, sel_ital3);
/* Make the word mask. Use input boxes or mask if given. */
size = 0; /* init */
if (boxaw) {
pixm = pixCreateTemplate(pixs);
pixMaskBoxa(pixm, pixm, boxaw, L_SET_PIXELS);
} else if (pixw) {
pixm = pixClone(pixw);
} else {
pixWordMaskByDilation(pixs, NULL, &size, NULL);
L_INFO("dilation size = %d\n", procName, size);
snprintf(opstring, sizeof(opstring), "d1.5 + c%d.1", size);
pixm = pixMorphSequence(pixs, opstring, 0);
}
/* Binary reconstruction to fill in those word mask
* components for which there is at least one seed pixel. */
pixd = pixSeedfillBinary(NULL, pixsd, pixm, 8);
boxa = pixConnComp(pixd, NULL, 8);
*pboxa = boxa;
if (debugflag) {
/* Save results at at 2x reduction */
lept_mkdir("lept/ital");
l_int32 res, upper;
BOXA *boxat;
GPLOT *gplot;
NUMA *na;
PIXA *pad;
PIX *pix1, *pix2, *pix3;
pad = pixaCreate(0);
boxat = pixConnComp(pixm, NULL, 8);
boxaWrite("/tmp/lept/ital/ital.ba", boxat);
pixSaveTiledOutline(pixs, pad, 0.5, 1, 20, 2, 32); /* orig */
pixSaveTiledOutline(pixsd, pad, 0.5, 1, 20, 2, 0); /* seed */
pix1 = pixConvertTo32(pixm);
pixRenderBoxaArb(pix1, boxat, 3, 255, 0, 0);
pixSaveTiledOutline(pix1, pad, 0.5, 1, 20, 2, 0); /* mask + outline */
pixDestroy(&pix1);
pixSaveTiledOutline(pixd, pad, 0.5, 1, 20, 2, 0); /* ital mask */
pix1 = pixConvertTo32(pixs);
pixRenderBoxaArb(pix1, boxa, 3, 255, 0, 0);
pixSaveTiledOutline(pix1, pad, 0.5, 1, 20, 2, 0); /* orig + outline */
pixDestroy(&pix1);
pix1 = pixCreateTemplate(pixs);
pix2 = pixSetBlackOrWhiteBoxa(pix1, boxa, L_SET_BLACK);
pixCopy(pix1, pixs);
pix3 = pixDilateBrick(NULL, pixs, 3, 3);
pixCombineMasked(pix1, pix3, pix2);
pixSaveTiledOutline(pix1, pad, 0.5, 1, 20, 2, 0); /* ital bolded */
pixDestroy(&pix1);
pixDestroy(&pix2);
pixDestroy(&pix3);
pix2 = pixaDisplay(pad, 0, 0);
pixWrite("/tmp/lept/ital/ital.png", pix2, IFF_PNG);
pixDestroy(&pix2);
/* Assuming the image represents 6 inches of actual page width,
* the pixs resolution is approximately
* (width of pixs in pixels) / 6
* and the images have been saved at half this resolution. */
res = pixGetWidth(pixs) / 12;
L_INFO("resolution = %d\n", procName, res);
l_pdfSetDateAndVersion(0);
pixaConvertToPdf(pad, res, 1.0, L_FLATE_ENCODE, 75, "Italic Finder",
"/tmp/lept/ital/ital.pdf");
l_pdfSetDateAndVersion(1);
pixaDestroy(&pad);
boxaDestroy(&boxat);
/* Plot histogram of horizontal white run sizes. A small
* initial vertical dilation removes most runs that are neither
* inter-character nor inter-word. The larger first peak is
* from inter-character runs, and the smaller second peak is
* from inter-word runs. */
pix1 = pixDilateBrick(NULL, pixs, 1, 15);
upper = L_MAX(30, 3 * size);
na = pixRunHistogramMorph(pix1, L_RUN_OFF, L_HORIZ, upper);
pixDestroy(&pix1);
gplot = gplotCreate("/tmp/lept/ital/runhisto", GPLOT_PNG,
"Histogram of horizontal runs of white pixels, vs length",
"run length", "number of runs");
gplotAddPlot(gplot, NULL, na, GPLOT_LINES, "plot1");
gplotMakeOutput(gplot);
gplotDestroy(&gplot);
numaDestroy(&na);
}
selDestroy(&sel_ital1);
selDestroy(&sel_ital2);
selDestroy(&sel_ital3);
pixDestroy(&pixsd);
pixDestroy(&pixm);
pixDestroy(&pixd);
return 0;
}
开发者ID:renard314,项目名称:tess-two,代码行数:101,代码来源:finditalic.c
示例5: main
//.........这里部分代码省略.........
"Opening time vs sel size", "size", "time (ms)");
gplotAddPlot(gplot, nax, nac1, GPLOT_LINES, "linear rasterop");
gplotAddPlot(gplot, nax, nac2, GPLOT_LINES, "composite rasterop");
gplotAddPlot(gplot, nax, nac3, GPLOT_LINES, "linear dwa");
gplotAddPlot(gplot, nax, nac4, GPLOT_LINES, "composite dwa");
gplotMakeOutput(gplot);
gplotDestroy(&gplot);
numaDestroy(&nac1);
numaDestroy(&nac2);
numaDestroy(&nac3);
numaDestroy(&nac4);
/* --------- closing ----------*/
numaEmpty(na1);
numaEmpty(na2);
numaEmpty(na3);
numaEmpty(na4);
for (i = 0; i < nsels / 2; i++)
{
sel = selaGetSel(selalinear, i);
selGetParameters(sel, &sy, &sx, NULL, NULL);
selname = selGetName(sel);
fprintf(stderr, " %d .", i);
startTimer();
for (j = 0; j < NTIMES; j++)
pixClose(pixt, pixs, sel);
time = fact * stopTimer();
numaAddNumber(na1, time);
startTimer();
for (j = 0; j < NTIMES; j++)
pixCloseCompBrick(pixt, pixs, sx, sy);
time = fact * stopTimer();
numaAddNumber(na2, time);
startTimer();
for (j = 0; j < NTIMES; j++)
pixMorphDwa_3(pixt, pixs, L_MORPH_CLOSE, selname);
time = fact * stopTimer();
numaAddNumber(na3, time);
startTimer();
for (j = 0; j < NTIMES; j++)
pixCloseCompBrickDwa(pixt, pixs, sx, sy);
time = fact * stopTimer();
numaAddNumber(na4, time);
}
nac1 = numaWindowedMean(na1, HALFWIDTH);
nac2 = numaWindowedMean(na2, HALFWIDTH);
nac3 = numaWindowedMean(na3, HALFWIDTH);
nac4 = numaWindowedMean(na4, HALFWIDTH);
gplot = gplotCreate("/tmp/lept/morph/close", GPLOT_PNG,
"Closing time vs sel size", "size", "time (ms)");
gplotAddPlot(gplot, nax, nac1, GPLOT_LINES, "linear rasterop");
gplotAddPlot(gplot, nax, nac2, GPLOT_LINES, "composite rasterop");
gplotAddPlot(gplot, nax, nac3, GPLOT_LINES, "linear dwa");
gplotAddPlot(gplot, nax, nac4, GPLOT_LINES, "composite dwa");
gplotMakeOutput(gplot);
#ifndef _WIN32
sleep(1);
#else
Sleep(1000);
#endif /* _WIN32 */
gplotDestroy(&gplot);
numaDestroy(&nac1);
numaDestroy(&nac2);
numaDestroy(&nac3);
numaDestroy(&nac4);
numaDestroy(&na1);
numaDestroy(&na2);
numaDestroy(&na3);
numaDestroy(&na4);
numaDestroy(&nax);
selaDestroy(&selalinear);
pixDestroy(&pixt);
pixDestroy(&pixs);
/* Display the results together */
pixa = pixaCreate(0);
pixs = pixRead("/tmp/lept/morph/dilate.png");
pixaAddPix(pixa, pixs, L_INSERT);
pixs = pixRead("/tmp/lept/morph/erode.png");
pixaAddPix(pixa, pixs, L_INSERT);
pixs = pixRead("/tmp/lept/morph/open.png");
pixaAddPix(pixa, pixs, L_INSERT);
pixs = pixRead("/tmp/lept/morph/close.png");
pixaAddPix(pixa, pixs, L_INSERT);
pixt = pixaDisplayTiledInRows(pixa, 32, 1500, 1.0, 0, 40, 3);
pixWrite("/tmp/lept/morph/timings.png", pixt, IFF_PNG);
pixDisplay(pixt, 100, 100);
pixDestroy(&pixt);
pixaDestroy(&pixa);
return 0;
}
开发者ID:AAAyag,项目名称:tess-two,代码行数:101,代码来源:dwamorph2_reg.c
示例6: pixReadHeader
/*!
* pixReadHeader()
*
* Input: filename (with full pathname or in local directory)
* &format (<optional return> file format)
* &w, &h (<optional returns> width and height)
* &bps <optional return> bits/sample
* &spp <optional return> samples/pixel (1, 3 or 4)
* &iscmap (<optional return> 1 if cmap exists; 0 otherwise)
* Return: 0 if OK, 1 on error
*
* Notes:
* (1) This reads the actual headers for jpeg, png, tiff and pnm.
* For bmp and gif, we cheat and read the entire file into a pix,
* from which we extract the "header" information.
*/
l_int32
pixReadHeader(const char *filename,
l_int32 *pformat,
l_int32 *pw,
l_int32 *ph,
l_int32 *pbps,
l_int32 *pspp,
l_int32 *piscmap)
{
l_int32 format, ret, w, h, d, bps, spp, iscmap;
l_int32 type; /* ignored */
FILE *fp;
PIX *pix;
PROCNAME("pixReadHeader");
if (pw) *pw = 0;
if (ph) *ph = 0;
if (pbps) *pbps = 0;
if (pspp) *pspp = 0;
if (piscmap) *piscmap = 0;
if (pformat) *pformat = 0;
iscmap = 0; /* init to false */
if (!filename)
return ERROR_INT("filename not defined", procName, 1);
if ((fp = fopenReadStream(filename)) == NULL)
return ERROR_INT("image file not found", procName, 1);
findFileFormatStream(fp, &format);
fclose(fp);
switch (format)
{
case IFF_BMP: /* cheating: reading the entire file */
if ((pix = pixRead(filename)) == NULL)
return ERROR_INT( "bmp: pix not read", procName, 1);
pixGetDimensions(pix, &w, &h, &d);
if (pixGetColormap(pix))
iscmap = 1;
pixDestroy(&pix);
bps = (d == 32) ? 8 : d;
spp = (d == 32) ? 3 : 1;
break;
case IFF_JFIF_JPEG:
ret = readHeaderJpeg(filename, &w, &h, &spp, NULL, NULL);
bps = 8;
if (ret)
return ERROR_INT( "jpeg: no header info returned", procName, 1);
break;
case IFF_PNG:
ret = readHeaderPng(filename, &w, &h, &bps, &spp, &iscmap);
if (ret)
return ERROR_INT( "png: no header info returned", procName, 1);
break;
case IFF_TIFF:
case IFF_TIFF_PACKBITS:
case IFF_TIFF_RLE:
case IFF_TIFF_G3:
case IFF_TIFF_G4:
case IFF_TIFF_LZW:
case IFF_TIFF_ZIP:
/* Reading page 0 by default; possibly redefine format */
ret = readHeaderTiff(filename, 0, &w, &h, &bps, &spp, NULL, &iscmap,
&format);
if (ret)
return ERROR_INT( "tiff: no header info returned", procName, 1);
break;
case IFF_PNM:
ret = readHeaderPnm(filename, &w, &h, &d, &type, &bps, &spp);
if (ret)
return ERROR_INT( "pnm: no header info returned", procName, 1);
break;
case IFF_GIF: /* cheating: reading the entire file */
if ((pix = pixRead(filename)) == NULL)
return ERROR_INT( "gif: pix not read", procName, 1);
pixGetDimensions(pix, &w, &h, &d);
pixDestroy(&pix);
iscmap = 1; /* always colormapped; max 256 colors */
spp = 1;
//.........这里部分代码省略.........
开发者ID:xmarston,项目名称:BillRecognizer,代码行数:101,代码来源:readfile.c
示例7: main
main(int argc,
char **argv)
{
l_int32 i, wf, hf, w, h, d, same;
l_float32 rank, time;
PIX *pixs, *pixd, *pixt1, *pixt2, *pixt3, *pixt4;
PIXA *pixa;
char *filein, *fileout;
static char mainName[] = "ranktest";
if (argc != 6)
exit(ERROR_INT(" Syntax: ranktest filein wf hf rank fileout",
mainName, 1));
filein = argv[1];
wf = atoi(argv[2]);
hf = atoi(argv[3]);
rank = atof(argv[4]);
fileout = argv[5];
if ((pixs = pixRead(filein)) == NULL)
exit(ERROR_INT("pix not made", mainName, 1));
pixGetDimensions(pixs, &w, &h, &d);
if (d != 8 && d != 32)
exit(ERROR_INT("pix neither 8 nor 32 bpp", mainName, 1));
startTimer();
pixd = pixRankFilter(pixs, wf, hf, rank);
time = stopTimer();
fprintf(stderr, "Time = %7.3f sec\n", time);
fprintf(stderr, "MPix/sec: %7.3f\n", 0.000001 * w * h / time);
pixDisplay(pixs, 0, 0);
pixDisplay(pixd, 600, 0);
pixWrite(fileout, pixd, IFF_PNG);
pixDestroy(&pixd);
/* Get results for different rank values */
for (i = 0; i <= 10; i++) {
pixd = pixRankFilter(pixs, wf, hf, 0.1 * i);
pixDisplayWrite(pixd, 1);
pixDestroy(&pixd);
}
/* Make the dimensions odd to compare with dilation & erosion */
if (wf % 2 == 0) wf++;
if (hf % 2 == 0) hf++;
/* Get results for dilation and erosion */
if (d == 8) {
pixt1 = pixDilateGray(pixs, wf, hf);
pixt2 = pixErodeGray(pixs, wf, hf);
} else {
pixt1 = pixColorMorph(pixs, L_MORPH_DILATE, wf, hf);
pixt2 = pixColorMorph(pixs, L_MORPH_ERODE, wf, hf);
}
pixDisplayWrite(pixt1, 1); /* dilation */
/* Get results using the rank filter for rank = 0.0 and 1.0.
* Don't use 0.0 or 1.0, because those are dispatched
* automatically to erosion and dilation! */
pixt3 = pixRankFilter(pixs, wf, hf, 0.0001);
pixt4 = pixRankFilter(pixs, wf, hf, 0.9999);
/* Compare */
pixEqual(pixt1, pixt4, &same);
if (same)
fprintf(stderr, "Correct: dilation results same as rank 1.0\n");
else
fprintf(stderr, "Error: dilation results differ from rank 1.0\n");
pixEqual(pixt2, pixt3, &same);
if (same)
fprintf(stderr, "Correct: erosion results same as rank 0.0\n");
else
fprintf(stderr, "Error: erosion results differ from rank 0.0\n");
pixDestroy(&pixt1);
pixDestroy(&pixt2);
pixDestroy(&pixt3);
pixDestroy(&pixt4);
/* Display tiled */
pixa = pixaReadFiles("/tmp", "junk_write_display");
pixd = pixaDisplayTiledAndScaled(pixa, d, 400, 3, 0, 25, 2);
pixWrite("/tmp/junktiles.jpg", pixd, IFF_JFIF_JPEG);
pixDestroy(&pixd);
pixaDestroy(&pixa);
pixDestroy(&pixs);
return 0;
}
开发者ID:ErfanHasmin,项目名称:scope-ocr,代码行数:89,代码来源:ranktest.c
示例8: main
main(int argc,
char **argv)
{
char *text;
l_int32 w, h, d, wpl, count, npages, color, format;
FILE *fp;
PIX *pix;
PIXCMAP *cmap;
char *filein;
static char mainName[] = "fileinfo";
if (argc != 2)
exit(ERROR_INT(" Syntax: fileinfo filein", mainName, 1));
filein = argv[1];
l_pngSetStrip16To8(0); /* to preserve 16 bpp if format is png */
if ((pix = pixRead(filein)) == NULL)
exit(ERROR_INT("image not returned from file", mainName, 1));
format = pixGetInputFormat(pix);
fprintf(stderr, "Input image format type: %s\n",
ImageFileFormatExtensions[format]);
pixGetDimensions(pix, &w, &h, &d);
wpl = pixGetWpl(pix);
fprintf(stderr, "w = %d, h = %d, d = %d, wpl = %d\n", w, h, d, wpl);
fprintf(stderr, "xres = %d, yres = %d\n", pixGetXRes(pix), pixGetYRes(pix));
text = pixGetText(pix);
if (text) /* not null */
fprintf(stderr, "Text: %s\n", text);
cmap = pixGetColormap(pix);
if (cmap) {
pixcmapHasColor(cmap, &color);
if (color)
fprintf(stderr, "Colormap exists and has color values:");
else
fprintf(stderr, "Colormap exists and has only gray values:");
pixcmapWriteStream(stderr, pixGetColormap(pix));
}
else
fprintf(stderr, "Colormap does not exist.\n");
if (format == IFF_TIFF || format == IFF_TIFF_G4 ||
format == IFF_TIFF_G3 || format == IFF_TIFF_PACKBITS) {
fprintf(stderr, "Tiff header information:\n");
fp = fopen(filein, "r");
tiffGetCount(fp, &npages);
fclose(fp);
if (npages == 1)
fprintf(stderr, "One page in file\n", npages);
else
fprintf(stderr, "%d pages in file\n", npages);
fprintTiffInfo(stderr, filein);
}
if (d == 1) {
pixCountPixels(pix, &count, NULL);
fprintf(stderr, "pixel ratio ON/OFF = %6.3f\n",
(l_float32)count / (l_float32)(pixGetWidth(pix) * pixGetHeight(pix)));
}
pixDestroy(&pix);
exit(0);
}
开发者ID:AngusHardie,项目名称:TesseractOCR-For-Mac,代码行数:65,代码来源:fileinfo.c
示例9: MakeIndividualGlyphs
bool MakeIndividualGlyphs(Pix* pix,
const vector<BoxChar*>& vbox,
const int input_tiff_page) {
// If checks fail, return false without exiting text2image
if (!pix) {
tprintf("ERROR: MakeIndividualGlyphs(): Input Pix* is nullptr\n");
return false;
} else if (FLAGS_glyph_resized_size <= 0) {
tprintf("ERROR: --glyph_resized_size must be positive\n");
return false;
} else if (FLAGS_glyph_num_border_pixels_to_pad < 0) {
tprintf("ERROR: --glyph_num_border_pixels_to_pad must be 0 or positive\n");
return false;
}
const int n_boxes = vbox.size();
int n_boxes_saved = 0;
int current_tiff_page = 0;
int y_previous = 0;
static int glyph_count = 0;
for (int i = 0; i < n_boxes; i++) {
// Get one bounding box
Box* b = vbox[i]->mutable_box();
if (!b) continue;
const int x = b->x;
const int y = b->y;
const int w = b->w;
const int h = b->h;
// Check present tiff page (for multipage tiff)
if (y < y_previous-pixGetHeight(pix)/10) {
tprintf("ERROR: Wrap-around encountered, at i=%d\n", i);
current_tiff_page++;
}
if (current_tiff_page < input_tiff_page) continue;
else if (current_tiff_page > input_tiff_page) break;
// Check box validity
if (x < 0 || y < 0 ||
(x+w-1) >= pixGetWidth(pix) ||
(y+h-1) >= pixGetHeight(pix)) {
tprintf("ERROR: MakeIndividualGlyphs(): Index out of range, at i=%d"
" (x=%d, y=%d, w=%d, h=%d\n)", i, x, y, w, h);
continue;
} else if (w < FLAGS_glyph_num_border_pixels_to_pad &&
h < FLAGS_glyph_num_border_pixels_to_pad) {
tprintf("ERROR: Input image too small to be a character, at i=%d\n", i);
continue;
}
// Crop the boxed character
Pix* pix_glyph = pixClipRectangle(pix, b, nullptr);
if (!pix_glyph) {
tprintf("ERROR: MakeIndividualGlyphs(): Failed to clip, at i=%d\n", i);
continue;
}
// Resize to square
Pix* pix_glyph_sq = pixScaleToSize(pix_glyph,
FLAGS_glyph_resized_size,
FLAGS_glyph_resized_size);
if (!pix_glyph_sq) {
tprintf("ERROR: MakeIndividualGlyphs(): Failed to resize, at i=%d\n", i);
continue;
}
// Zero-pad
Pix* pix_glyph_sq_pad = pixAddBorder(pix_glyph_sq,
FLAGS_glyph_num_border_pixels_to_pad,
0);
if (!pix_glyph_sq_pad) {
tprintf("ERROR: MakeIndividualGlyphs(): Failed to zero-pad, at i=%d\n",
i);
continue;
}
// Write out
Pix* pix_glyph_sq_pad_8 = pixConvertTo8(pix_glyph_sq_pad, false);
char filename[1024];
snprintf(filename, 1024, "%s_%d.jpg", FLAGS_outputbase.c_str(),
glyph_count++);
if (pixWriteJpeg(filename, pix_glyph_sq_pad_8, 100, 0)) {
tprintf("ERROR: MakeIndividualGlyphs(): Failed to write JPEG to %s,"
" at i=%d\n", filename, i);
continue;
}
pixDestroy(&pix_glyph);
pixDestroy(&pix_glyph_sq);
pixDestroy(&pix_glyph_sq_pad);
pixDestroy(&pix_glyph_sq_pad_8);
n_boxes_saved++;
y_previous = y;
}
if (n_boxes_saved == 0) {
return false;
} else {
tprintf("Total number of characters saved = %d\n", n_boxes_saved);
return true;
}
}
开发者ID:dipthomas,项目名称:tesseract,代码行数:95,代码来源:text2image.cpp
示例10: selaAddTJunctions
//.........这里部分代码省略.........
l_int32 i, j, k, w, xc, yc;
l_float64 pi, halfpi, radincr, jang, radang;
l_float64 angle[3], dist[3];
PIX *pixc, *pixm, *pixt;
PIXA *pixa;
PTA *pta1, *pta2, *pta3;
SEL *sel;
PROCNAME("selaAddTJunctions");
if (hlsize <= 2)
return (SELA *)ERROR_PTR("hlsizel not > 1", procName, NULL);
if (norient < 1 || norient > 8)
return (SELA *)ERROR_PTR("norient not in [1, ... 8]", procName, NULL);
if (!sela) {
if ((sela = selaCreate(0)) == NULL)
return (SELA *)ERROR_PTR("sela not made", procName, NULL);
}
pi = 3.1415926535;
halfpi = 3.1415926535 / 2.0;
radincr = halfpi / (l_float32)norient;
w = (l_int32)(2.4 * (L_MAX(hlsize, mdist) + 0.5));
if (w % 2 == 0)
w++;
xc = w / 2;
yc = w / 2;
pixa = pixaCreate(4 * norient);
for (i = 0; i < norient; i++) {
for (j = 0; j < 4; j++) { /* 4 orthogonal orientations */
jang = (l_float32)j * halfpi;
/* Set the don't cares */
pixc = pixCreate(w, w, 32);
pixSetAll(pixc);
/* Add the green lines of hits */
pixm = pixCreate(w, w, 1);
radang = (l_float32)i * radincr;
pta1 = generatePtaLineFromPt(xc, yc, hlsize + 1, jang + radang);
pta2 = generatePtaLineFromPt(xc, yc, hlsize + 1,
jang + radang + halfpi);
pta3 = generatePtaLineFromPt(xc, yc, hlsize + 1,
jang + radang + pi);
ptaJoin(pta1, pta2, 0, -1);
ptaJoin(pta1, pta3, 0, -1);
pixRenderPta(pixm, pta1, L_SET_PIXELS);
pixPaintThroughMask(pixc, pixm, 0, 0, 0x00ff0000);
ptaDestroy(&pta1);
ptaDestroy(&pta2);
ptaDestroy(&pta3);
/* Add red misses between the lines */
angle[0] = radang + jang - halfpi;
angle[1] = radang + jang + 0.5 * halfpi;
angle[2] = radang + jang + 1.5 * halfpi;
dist[0] = 0.8 * mdist;
dist[1] = dist[2] = mdist;
for (k = 0; k < 3; k++) {
pixSetPixel(pixc, xc + (l_int32)(dist[k] * cos(angle[k])),
yc + (l_int32)(dist[k] * sin(angle[k])),
0xff000000);
}
/* Add dark green for origin */
pixSetPixel(pixc, xc, yc, 0x00550000);
/* Generate the sel */
sel = selCreateFromColorPix(pixc, NULL);
sprintf(name, "sel_cross_%d", 4 * i + j);
selaAddSel(sela, sel, name, 0);
if (debugflag) {
pixt = pixScaleBySampling(pixc, 10.0, 10.0);
pixaAddPix(pixa, pixt, L_INSERT);
}
pixDestroy(&pixm);
pixDestroy(&pixc);
}
}
if (debugflag) {
l_int32 w;
pixaGetPixDimensions(pixa, 0, &w, NULL, NULL);
pixt = pixaDisplayTiledAndScaled(pixa, 32, w, 4, 0, 10, 2);
pixWriteTempfile("/tmp", "tsel1.png", pixt, IFF_PNG, 0);
pixDisplay(pixt, 0, 100);
pixDestroy(&pixt);
pixt = selaDisplayInPix(sela, 15, 2, 20, 4);
pixWriteTempfile("/tmp", "tsel2.png", pixt, IFF_PNG, 0);
pixDisplay(pixt, 500, 100);
pixDestroy(&pixt);
selaWriteStream(stderr, sela);
}
pixaDestroy(&pixa);
return sela;
}
开发者ID:peterlee2008,项目名称:leptonica,代码行数:101,代码来源:sel2.c
示例11: main
main(int argc,
char **argv)
{
char buf[256];
size_t nbytes;
l_int32 i, w, h, success, display;
l_int32 format, bps, spp, iscmap, format2, w2, h2, bps2, spp2, iscmap2;
l_uint8 *data;
l_uint32 *data32, *data32r;
BOX *box;
FILE *fp;
PIX *pixs, *pixt, *pixt2, *pixd;
if (regTestSetup(argc, argv, &fp, &display, &success, NULL))
return 1;
/* Test basic serialization/deserialization */
for (i = 0; i < nfiles; i++) {
pixs = pixRead(filename[i]);
/* Serialize to memory */
pixSerializeToMemory(pixs, &data32, &nbytes);
/* Just for fun, write and read back from file */
arrayWrite("/tmp/array", "w", data32, nbytes);
data32r = (l_uint32 *)arrayRead("/tmp/array", (l_int32 *)(&nbytes));
/* Deserialize */
pixd = pixDeserializeFromMemory(data32r, nbytes);
regTestComparePix(fp, argv, pixs, pixd, i, &success);
pixDestroy(&pixd);
pixDestroy(&pixs);
FREE(data32);
FREE(data32r);
}
/* Test read/write fileio interface */
for (i = 0; i < nfiles; i++) {
pixs = pixRead(filename[i]);
pixGetDimensions(pixs, &w, &h, NULL);
box = boxCreate(0, 0, L_MIN(150, w), L_MIN(150, h));
pixt = pixClipRectangle(pixs, box, NULL);
boxDestroy(&box);
snprintf(buf, sizeof(buf), "/tmp/pixs.%d", i);
pixWrite(buf, pixt, IFF_SPIX);
regTestCheckFile(fp, argv, buf, i, &success);
pixt2 = pixRead(buf);
regTestComparePix(fp, argv, pixt, pixt2, nfiles + i, &success);
pixDestroy(&pixs);
pixDestroy(&pixt);
pixDestroy(&pixt2);
}
/* Test read header. Note that for rgb input, spp = 3,
* but for 32 bpp spix, we set spp = 4. */
for (i = 0; i < nfiles; i++) {
pixs = pixRead(filename[i]);
pixWriteMem(&data, &nbytes, pixs, IFF_SPIX);
pixReadHeader(filename[i], &format, &w, &h, &bps, &spp, &iscmap);
pixReadHeaderMem(data, nbytes, &format2, &w2, &h2, &bps2,
&spp2, &iscmap2);
if (format2 != 16 || w != w2 || h != h2 || bps != bps2 ||
iscmap != iscmap2) {
if (fp)
fprintf(fp, "Failure comparing data");
else
fprintf(stderr, "Failure comparing data");
success = FALSE;
}
pixDestroy(&pixs);
FREE(data);
}
#if 0
/* Do timing */
for (i = 0; i < nfiles; i++) {
pixs = pixRead(filename[i]);
startTimer();
pixSerializeToMemory(pixs, &data32, &nbytes);
pixd = pixDeserializeFromMemory(data32, nbytes);
fprintf(stderr, "Time for %s: %7.3f sec\n", filename[i], stopTimer());
FREE(data32);
pixDestroy(&pixs);
pixDestroy(&pixd);
}
#endif
regTestCleanup(argc, argv, fp, success, NULL);
return 0;
}
开发者ID:AngusHardie,项目名称:TesseractOCR-For-Mac,代码行数:87,代码来源:pixserial_reg.c
示例12: main
//.........这里部分代码省略.........
pixd = pixSelectByPerimToAreaRatio(pixt, 0.15, 8, L_SELECT_IF_GT, NULL);
count_pieces(pixd, 3);
pixd = pixSelectByPerimToAreaRatio(pixt, 0.4, 8, L_SELECT_IF_LTE, NULL);
count_pieces(pixd, 2);
pixd = pixSelectByPerimToAreaRatio(pixt, 0.45, 8, L_SELECT_IF_LT, NULL);
count_pieces(pixd, 3);
pixd = pixSelectByPerimSizeRatio(pixt2, 2.3, 8, L_SELECT_IF_GT, NULL);
count_pieces(pixd, 2);
pixd = pixSelectByPerimSizeRatio(pixt2, 1.2, 8, L_SELECT_IF_GT, NULL);
count_pieces(pixd, 3);
pixd = pixSelectByPerimSizeRatio(pixt2, 1.7, 8, L_SELECT_IF_LTE, NULL);
count_pieces(pixd, 1);
pixd = pixSelectByPerimSizeRatio(pixt2, 2.9, 8, L_SELECT_IF_LT, NULL);
count_pieces(pixd, 3);
pixd = pixSelectByAreaFraction(pixt2, 0.3, 8, L_SELECT_IF_LT, NULL);
count_pieces(pixd, 0);
pixd = pixSelectByAreaFraction(pixt2, 0.9, 8, L_SELECT_IF_LT, NULL);
count_pieces(pixd, 4);
pixd = pixSelectByAreaFraction(pixt2, 0.5, 8, L_SELECT_IF_GTE, NULL);
count_pieces(pixd, 3);
pixd = pixSelectByAreaFraction(pixt2, 0.7, 8, L_SELECT_IF_GT, NULL);
count_pieces(pixd, 2);
boxat = boxaSelectBySize(boxa, 21, 10, L_SELECT_IF_EITHER,
L_SELECT_IF_LT, NULL);
count_pieces2(boxat, 3);
boxat = boxaSelectBySize(boxa, 22, 32, L_SELECT_IF_BOTH,
L_SELECT_IF_LT, NULL);
count_pieces2(boxat, 2);
boxaDestroy(&boxa);
pixDestroy(&pixt);
pixDestroy(&pixt2);
pixDestroy(&pixs);
/* Here's the most general method for selecting components.
* We do it for area fraction, but any combination of
* size, area/perimeter ratio and area fraction can be used. */
pixs = pixRead("feyn.tif");
/* pixs = pixRead("rabi.png"); */
pixc = pixCopy(NULL, pixs); /* subtract bands from this */
pixt = pixCreateTemplate(pixs); /* add bands to this */
pixGetDimensions(pixs, &w, &h, NULL);
boxa = pixConnComp(pixs, &pixas, 8);
n = boxaGetCount(boxa);
fprintf(stderr, "total: %d\n", n);
na1 = pixaFindAreaFraction(pixas);
nat = numaCreate(0);
numaSetCount(nat, n); /* initialize to all 0 */
sum = sumi = 0;
pixac = pixaCreate(0);
for (i = 0; i < 12; i++) {
/* Compute within the intervals using an intersection. */
na2 = numaMakeThresholdIndicator(na1, edges[i], L_SELECT_IF_GTE);
if (i != 11)
na3 = numaMakeThresholdIndicator(na1, edges[i + 1], L_SELECT_IF_LT);
else
na3 = numaMakeThresholdIndicator(na1, edges[i + 1],
L_SELECT_IF_LTE);
na4 = numaLogicalOp(NULL, na2, na3, L_INTERSECTION);
sum += count_ones(na4, 0, 0, NULL);
/* Compute outside the intervals using a union, and invert */
na2i = numaMakeThresholdIndicator(na1, edges[i], L_SELECT_IF_LT);
开发者ID:xmarston,项目名称:BillRecognizer,代码行数:67,代码来源:compfilter_reg.c
示例13: bleft
/**
* Auto page segmentation. Divide the page image into blocks of uniform
* text linespacing and images.
*
* Width, height and resolution are derived from the input image.
*
* If the pix is non-NULL, then it is assumed to be the input, and it is
* copied to the image, otherwise the image is used directly.
*
* The output goes in the blocks list with corresponding TO_BLOCKs in the
* to_blocks list.
*
* If single_column is true, then no attempt is made to divide the image
* into columns, but multiple blocks are still made if the text is of
* non-uniform linespacing.
*/
int Tesseract::AutoPageSeg(int width, int height, int resolution,
bool single_column, IMAGE* image,
BLOCK_LIST* blocks, TO_BLOCK_LIST* to_blocks) {
int vertical_x = 0;
int vertical_y = 1;
TabVector_LIST v_lines;
TabVector_LIST h_lines;
ICOORD bleft(0, 0);
Boxa* boxa = NULL;
Pixa* pixa = NULL;
// The blocks made by the ColumnFinder. Moved to blocks before return.
BLOCK_LIST found_blocks;
#ifdef HAVE_LIBLEPT
if (pix_binary_ != NULL) {
if (textord_debug_images) {
Pix* grey_pix = pixCreate(width, height, 8);
// Printable images are light grey on white, but for screen display
// they are black on dark grey so the other colors show up well.
if (textord_debug_printable) {
pixSetAll(grey_pix);
pixSetMasked(grey_pix, pix_binary_, 192);
} else {
pixSetAllArbitrary(grey_pix, 64);
pixSetMasked(grey_pix, pix_binary_, 0);
}
AlignedBlob::IncrementDebugPix();
pixWrite(AlignedBlob::textord_debug_pix().string(), grey_pix, IFF_PNG);
pixDestroy(&grey_pix);
}
if (tessedit_dump_pageseg_images)
pixWrite("tessinput.png", pix_binary_, IFF_PNG);
// Leptonica is used to find the lines and image regions in the input.
LineFinder::FindVerticalLines(resolution, pix_binary_,
&vertical_x, &vertical_y, &v_lines);
LineFinder::FindHorizontalLines(resolution, pix_binary_, &h_lines);
if (tessedit_dump_pageseg_images)
pixWrite("tessnolines.png", pix_binary_, IFF_PNG);
ImageFinder::FindImages(pix_binary_, &boxa, &pixa);
if (tessedit_dump_pageseg_images)
pixWrite("tessnoimages.png", pix_binary_, IFF_PNG);
// Copy the Pix to the IMAGE.
image->FromPix(pix_binary_);
if (single_column)
v_lines.clear();
}
#endif
TO_BLOCK_LIST land_blocks, port_blocks;
TBOX page_box;
// The rest of the algorithm uses the usual connected components.
find_components(blocks, &land_blocks, &port_blocks, &page_box);
TO_BLOCK_IT to_block_it(&port_blocks);
ASSERT_HOST(!to_block_it.empty());
for (to_block_it.mark_cycle_pt(); !to_block_it.cycled_list();
to_block_it.forward()) {
TO_BLOCK* to_block = to_block_it.data();
TBOX blkbox = to_block->block->bounding_box();
if (to_block->line_size >= 2) {
// Note: if there are multiple blocks, then v_lines, boxa, and pixa
// are empty on the next iteration, but in this case, we assume
// that there aren't any interesting line separators or images, since
// it means that we have a pre-defined unlv zone file.
ColumnFinder finder(static_cast<int>(to_block->line_size),
blkbox.botleft(), blkbox.topright(),
&v_lines, &h_lines, vertical_x, vertical_y);
if (finder.FindBlocks(height, resolution, single_column,
to_block, boxa, pixa, &found_blocks, to_blocks) < 0)
return -1;
finder.ComputeDeskewVectors(&deskew_, &reskew_);
boxa = NULL;
pixa = NULL;
}
}
#ifdef HAVE_LIBLEPT
boxaDestroy(&boxa);
pixaDestroy(&pixa);
#endif
blocks->clear();
BLOCK_IT block_it(blocks);
// Move the found blocks to the input/output blocks.
block_it.add_list_after(&found_blocks);
if (textord_debug_images) {
//.........这里部分代码省略.........
开发者ID:gmavenis,项目名称:tesseractstuff,代码行数:101,代码来源:pagesegmain.cpp
示例14: main
main(int argc,
char **argv)
{
char *selnameh, *selnamev;
l_int32 ok, same, w, h, i, bordercolor, extraborder;
l_int32 width[3] = {21, 1, 21};
l_int32 height[3] = {1, 7, 7};
PIX *pixs, *pixref;
PIX *pixt0, *pixt1, *pixt2, *pixt3, *pixt4;
SEL *sel;
SELA *sela;
static char mainName[] = "binmorph3_reg";
if (argc != 1)
exit(ERROR_INT(" Syntax: binmorph3_reg", mainName, 1));
if ((pixs = pixRead("feyn.tif")) == NULL)
exit(ERROR_INT("pix not made", mainName, 1));
#if TEST_SYMMETRIC
|
请发表评论