本文整理汇总了C++中pixGetDimensions函数的典型用法代码示例。如果您正苦于以下问题:C++ pixGetDimensions函数的具体用法?C++ pixGetDimensions怎么用?C++ pixGetDimensions使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pixGetDimensions函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PixTest2
PIX *
PixTest2(PIX *pixs,
l_int32 size,
l_float32 factor,
l_int32 nx,
l_int32 ny,
L_REGPARAMS *rp)
{
l_int32 w, h;
PIX *pixth, *pixd, *pixt;
PIXA *pixa;
pixth = pixd = NULL;
pixGetDimensions(pixs, &w, &h, NULL);
/* Get speed */
startTimer();
pixSauvolaBinarizeTiled(pixs, size, factor, nx, ny, NULL, &pixd);
fprintf(stderr, "Speed: %d x %d tiles, %7.3f Mpix/sec\n",
nx, ny, (w * h / 1000000.) / stopTimer());
pixDestroy(&pixd);
/* Get results */
pixSauvolaBinarizeTiled(pixs, size, factor, nx, ny, &pixth, &pixd);
regTestWritePixAndCheck(rp, pixth, IFF_JFIF_JPEG);
regTestWritePixAndCheck(rp, pixd, IFF_PNG);
if (rp->index < 5 && rp->display) {
pixa = pixaCreate(0);
pixSaveTiled(pixth, pixa, 1, 1, 30, 8);
pixSaveTiled(pixd, pixa, 1, 0, 30, 8);
pixt = pixaDisplay(pixa, 0, 0);
pixDisplayWithTitle(pixt, 100, 400, NULL, rp->display);
pixDestroy(&pixt);
pixaDestroy(&pixa);
}
pixDestroy(&pixth);
return pixd;
}
示例2: wshedCreate
/*!
* wshedCreate()
*
* Input: pixs (8 bpp source)
* pixm (1 bpp 'marker' seed)
* mindepth (minimum depth; anything less is not saved)
* debugflag (1 for debug output)
* Return: WShed, or null on error
*
* Notes:
* (1) It is not necessary for the fg pixels in the seed image
* be at minima, or that they be isolated. We extract a
* single pixel from each connected component, and a seed
* anywhere in a watershed will eventually label the watershed
* when the filling level reaches it.
* (2) Set mindepth to some value to ignore noise in pixs that
* can create small local minima. Any watershed shallower
* than mindepth, even if it has a seed, will not be saved;
* It will either be incorporated in another watershed or
* eliminated.
*/
L_WSHED *
wshedCreate(PIX *pixs,
PIX *pixm,
l_int32 mindepth,
l_int32 debugflag)
{
l_int32 w, h;
L_WSHED *wshed;
PROCNAME("wshedCreate");
if (!pixs)
return (L_WSHED *)ERROR_PTR("pixs is not defined", procName, NULL);
if (pixGetDepth(pixs) != 8)
return (L_WSHED *)ERROR_PTR("pixs is not 8 bpp", procName, NULL);
if (!pixm)
return (L_WSHED *)ERROR_PTR("pixm is not defined", procName, NULL);
if (pixGetDepth(pixm) != 1)
return (L_WSHED *)ERROR_PTR("pixm is not 1 bpp", procName, NULL);
pixGetDimensions(pixs, &w, &h, NULL);
if (pixGetWidth(pixm) != w || pixGetHeight(pixm) != h)
return (L_WSHED *)ERROR_PTR("pixs/m sizes are unequal", procName, NULL);
if ((wshed = (L_WSHED *)CALLOC(1, sizeof(L_WSHED))) == NULL)
return (L_WSHED *)ERROR_PTR("wshed not made", procName, NULL);
wshed->pixs = pixClone(pixs);
wshed->pixm = pixClone(pixm);
wshed->mindepth = L_MAX(1, mindepth);
wshed->pixlab = pixCreate(w, h, 32);
pixSetAllArbitrary(wshed->pixlab, MAX_LABEL_VALUE);
wshed->pixt = pixCreate(w, h, 1);
wshed->lines8 = pixGetLinePtrs(pixs, NULL);
wshed->linem1 = pixGetLinePtrs(pixm, NULL);
wshed->linelab32 = pixGetLinePtrs(wshed->pixlab, NULL);
wshed->linet1 = pixGetLinePtrs(wshed->pixt, NULL);
wshed->debug = debugflag;
return wshed;
}
示例3: Java_com_googlecode_leptonica_android_WriteFile_nativeWriteBytes8
jint Java_com_googlecode_leptonica_android_WriteFile_nativeWriteBytes8(JNIEnv *env, jclass clazz,
jint nativePix,
jbyteArray data) {
LOGV(__FUNCTION__);
l_int32 w, h, d;
PIX *pix = (PIX *) nativePix;
pixGetDimensions(pix, &w, &h, &d);
l_uint8 **lineptrs = pixSetupByteProcessing(pix, NULL, NULL);
jbyte *data_buffer = env->GetByteArrayElements(data, NULL);
l_uint8 *byte_buffer = (l_uint8 *) data_buffer;
for (int i = 0; i < h; i++) {
memcpy((byte_buffer + (i * w)), lineptrs[i], w);
}
env->ReleaseByteArrayElements(data, data_buffer, 0);
pixCleanupByteProcessing(pix, lineptrs);
return (jint) (w * h);
}
示例4: pixaCreateFromPix
/*!
* pixaCreateFromPix()
*
* Input: pixs (with individual components on a lattice)
* n (number of components)
* cellw (width of each cell)
* cellh (height of each cell)
* Return: pixa, or null on error
*
* Note: for bpp = 1, we truncate each retrieved pix to
* the ON pixels, which we assume for now start at (0,0)
*/
PIXA *
pixaCreateFromPix(PIX *pixs,
l_int32 n,
l_int32 cellw,
l_int32 cellh)
{
l_int32 w, h, d, nw, nh, i, j, index;
PIX *pix, *pixt;
PIXA *pixa;
PROCNAME("pixaCreateFromPix");
if (!pixs)
return (PIXA *)ERROR_PTR("pixs not defined", procName, NULL);
if (n <= 0)
return (PIXA *)ERROR_PTR("n must be > 0", procName, NULL);
if ((pixa = pixaCreate(n)) == NULL)
return (PIXA *)ERROR_PTR("pixa not made", procName, NULL);
pixGetDimensions(pixs, &w, &h, &d);
if ((pixt = pixCreate(cellw, cellh, d)) == NULL)
return (PIXA *)ERROR_PTR("pixt not made", procName, NULL);
nw = (w + cellw - 1) / cellw;
nh = (h + cellh - 1) / cellh;
for (i = 0, index = 0; i < nh; i++) {
for (j = 0; j < nw && index < n; j++, index++) {
pixRasterop(pixt, 0, 0, cellw, cellh, PIX_SRC, pixs,
j * cellw, i * cellh);
if (d == 1 && !pixClipToForeground(pixt, &pix, NULL))
pixaAddPix(pixa, pix, L_INSERT);
else
pixaAddPix(pixa, pixt, L_COPY);
}
}
pixDestroy(&pixt);
return pixa;
}
示例5: pixFinalAccumulateThreshold
/*!
* pixFinalAccumulateThreshold()
*
* Input: pixs (32 bpp)
* offset (same as used for initialization)
* threshold (values less than this are set in the destination)
* Return: pixd (1 bpp), or null on error
*
* Notes:
* (1) The offset must be >= 0 and should not exceed 0x40000000.
* (2) The offset is subtracted from the src 32 bpp image
*/
PIX *
pixFinalAccumulateThreshold(PIX *pixs,
l_uint32 offset,
l_uint32 threshold)
{
l_int32 i, j, w, h, wpls, wpld, val;
l_uint32 *datas, *datad, *lines, *lined;
PIX *pixd;
PROCNAME("pixFinalAccumulateThreshold");
if (!pixs)
return (PIX *)ERROR_PTR("pixs not defined", procName, NULL);
if (pixGetDepth(pixs) != 32)
return (PIX *)ERROR_PTR("pixs not 32 bpp", procName, NULL);
if (offset > 0x40000000)
offset = 0x40000000;
pixGetDimensions(pixs, &w, &h, NULL);
if ((pixd = pixCreate(w, h, 1)) == NULL)
return (PIX *)ERROR_PTR("pixd not made", procName, NULL);
pixCopyResolution(pixd, pixs); /* but how did pixs get it initially? */
datas = pixGetData(pixs);
datad = pixGetData(pixd);
wpls = pixGetWpl(pixs);
wpld = pixGetWpl(pixd);
for (i = 0; i < h; i++) {
lines = datas + i * wpls;
lined = datad + i * wpld;
for (j = 0; j < w; j++) {
val = lines[j] - offset;
if (val >= threshold) {
SET_DATA_BIT(lined, j);
}
}
}
return pixd;
}
示例6: nextOnPixelInRaster
/*!
* \brief nextOnPixelInRaster()
*
* \param[in] pixs 1 bpp
* \param[in] xstart, ystart starting point for search
* \param[out] px, py coord value of next ON pixel
* \return 1 if a pixel is found; 0 otherwise or on error
*/
l_int32
nextOnPixelInRaster(PIX *pixs,
l_int32 xstart,
l_int32 ystart,
l_int32 *px,
l_int32 *py)
{
l_int32 w, h, d, wpl;
l_uint32 *data;
PROCNAME("nextOnPixelInRaster");
if (!pixs)
return ERROR_INT("pixs not defined", procName, 0);
pixGetDimensions(pixs, &w, &h, &d);
if (d != 1)
return ERROR_INT("pixs not 1 bpp", procName, 0);
wpl = pixGetWpl(pixs);
data = pixGetData(pixs);
return nextOnPixelInRasterLow(data, w, h, wpl, xstart, ystart, px, py);
}
示例7: pixBilinearGray
/*!
* pixBilinearGray()
*
* Input: pixs (8 bpp)
* vc (vector of 8 coefficients for bilinear transformation)
* grayval (0 to bring in BLACK, 255 for WHITE)
* Return: pixd, or null on error
*/
PIX *
pixBilinearGray(PIX *pixs,
l_float32 *vc,
l_uint8 grayval) {
l_int32 i, j, w, h, wpls, wpld, val;
l_uint32 *datas, *datad, *lined;
l_float32 x, y;
PIX *pixd;
PROCNAME("pixBilinearGray");
if (!pixs)
return (PIX *) ERROR_PTR("pixs not defined", procName, NULL);
pixGetDimensions(pixs, &w, &h, NULL);
if (pixGetDepth(pixs) != 8)
return (PIX *) ERROR_PTR("pixs must be 8 bpp", procName, NULL);
if (!vc)
return (PIX *) ERROR_PTR("vc not defined", procName, NULL);
datas = pixGetData(pixs);
wpls = pixGetWpl(pixs);
pixd = pixCreateTemplate(pixs);
pixSetAllArbitrary(pixd, grayval);
datad = pixGetData(pixd);
wpld = pixGetWpl(pixd);
/* Iterate over destination pixels */
for (i = 0; i < h; i++) {
lined = datad + i * wpld;
for (j = 0; j < w; j++) {
/* Compute float src pixel location corresponding to (i,j) */
bilinearXformPt(vc, j, i, &x, &y);
linearInterpolatePixelGray(datas, wpls, w, h, x, y, grayval, &val);
SET_DATA_BYTE(lined, j, val);
}
}
return pixd;
}
示例8: pixThresholdToValue
/*!
* pixThresholdToValue()
*
* Input: pixd (<optional>; if not null, must be equal to pixs)
* pixs (8, 16, 32 bpp)
* threshval
* setval
* Return: pixd always
*
* Notes:
* - operation can be in-place (pixs == pixd) or to a new pixd
* - if setval > threshval, sets pixels with a value >= threshval to setval
* - if setval < threshval, sets pixels with a value <= threshval to setval
* - if setval == threshval, no-op
*/
PIX *
pixThresholdToValue(PIX *pixd,
PIX *pixs,
l_int32 threshval,
l_int32 setval)
{
l_int32 w, h, d, wpld;
l_uint32 *datad;
PROCNAME("pixThresholdToValue");
if (!pixs)
return (PIX *)ERROR_PTR("pixs not defined", procName, pixd);
d = pixGetDepth(pixs);
if (d != 8 && d != 16 && d != 32)
return (PIX *)ERROR_PTR("pixs not 8, 16 or 32 bpp", procName, pixd);
if (pixd && (pixs != pixd))
return (PIX *)ERROR_PTR("pixd exists and is not pixs", procName, pixd);
if (threshval < 0 || setval < 0)
return (PIX *)ERROR_PTR("threshval & setval not < 0", procName, pixd);
if (d == 8 && setval > 255)
return (PIX *)ERROR_PTR("setval > 255 for 8 bpp", procName, pixd);
if (d == 16 && setval > 0xffff)
return (PIX *)ERROR_PTR("setval > 0xffff for 16 bpp", procName, pixd);
if (!pixd)
pixd = pixCopy(NULL, pixs);
if (setval == threshval) {
L_WARNING("setval == threshval; no operation", procName);
return pixd;
}
datad = pixGetData(pixd);
pixGetDimensions(pixd, &w, &h, NULL);
wpld = pixGetWpl(pixd);
thresholdToValueLow(datad, w, h, d, wpld, threshval, setval);
return pixd;
}
示例9: regTestCompareSimilarPix
/*!
* regTestCompareSimilarPix()
*
* Input: rp (regtest parameters)
* pix1, pix2 (to be tested for equality)
* mindiff (minimum pixel difference to be counted; > 0)
* maxfract (maximum fraction of pixels allowed to have
* diff greater than or equal to mindiff)
* printstats (use 1 to print normalized histogram to stderr)
* Return: 0 if OK, 1 on error (a failure in similarity comparison
* is not an error)
*
* Notes:
* (1) This function compares two pix for equality. If not in compare
* mode, on failure it writes to stderr.
* (2) To identify two images as 'similar', select @maxfract to be
* the upper bound for what you expect. Typical values might
* be @mindiff = 15 and @maxfract = 0.01.
* (3) Normally, use @printstats = 0. In debugging mode, to see
* the relation between @mindiff and the minimum value of
* @maxfract for success, set this to 1.
*/
l_int32
regTestCompareSimilarPix(L_REGPARAMS *rp,
PIX *pix1,
PIX *pix2,
l_int32 mindiff,
l_float32 maxfract,
l_int32 printstats)
{
l_int32 w, h, factor, similar;
PROCNAME("regTestCompareSimilarPix");
if (!rp)
return ERROR_INT("rp not defined", procName, 1);
if (!pix1 || !pix2) {
rp->success = FALSE;
return ERROR_INT("pix1 and pix2 not both defined", procName, 1);
}
rp->index++;
pixGetDimensions(pix1, &w, &h, NULL);
factor = L_MAX(w, h) / 400;
factor = L_MAX(1, L_MIN(factor, 4)); /* between 1 and 4 */
pixTestForSimilarity(pix1, pix2, factor, mindiff, maxfract, 0.0,
&similar, printstats);
/* Record on failure */
if (!similar) {
if (rp->fp) {
fprintf(rp->fp,
"Failure in %s_reg: pix similarity comp for index %d\n",
rp->testname, rp->index);
}
fprintf(stderr, "Failure in %s_reg: pix similarity comp for index %d\n",
rp->testname, rp->index);
rp->success = FALSE;
}
return 0;
}
示例10: pixaGetPixDimensions
/*!
* pixaGetPixDimensions()
*
* Input: pixa
* index (to the index-th box)
* &w, &h, &d (<optional return>; each can be null)
* Return: 0 if OK, 1 on error
*/
l_int32
pixaGetPixDimensions(PIXA *pixa,
l_int32 index,
l_int32 *pw,
l_int32 *ph,
l_int32 *pd)
{
PIX *pix;
PROCNAME("pixaGetPixDimensions");
if (!pixa)
return ERROR_INT("pixa not defined", procName, 1);
if (index < 0 || index >= pixa->n)
return ERROR_INT("index not valid", procName, 1);
if ((pix = pixaGetPix(pixa, index, L_CLONE)) == NULL)
return ERROR_INT("pix not found!", procName, 1);
pixGetDimensions(pix, pw, ph, pd);
pixDestroy(&pix);
return 0;
}
示例11: pixSetPadBits
/*!
* pixSetPadBits()
*
* Input: pix (1, 2, 4, 8, 16, 32 bpp)
* val (0 or 1)
* Return: 0 if OK; 1 on error
*
* Notes:
* (1) The pad bits are the bits that expand each scanline to a
* multiple of 32 bits. They are usually not used in
* image processing operations. When boundary conditions
* are important, as in seedfill, they must be set properly.
* (2) This sets the value of the pad bits (if any) in the last
* 32-bit word in each scanline.
* (3) For 32 bpp pix, there are no pad bits, so this is a no-op.
*/
LEPTONICA_REAL_EXPORT l_int32
pixSetPadBits(PIX *pix,
l_int32 val)
{
l_int32 i, w, h, d, wpl, endbits, fullwords;
l_uint32 mask;
l_uint32 *data, *pword;
PROCNAME("pixSetPadBits");
if (!pix)
return ERROR_INT("pix not defined", procName, 1);
pixGetDimensions(pix, &w, &h, &d);
if (d == 32) /* no padding exists for 32 bpp */
return 0;
data = pixGetData(pix);
wpl = pixGetWpl(pix);
endbits = 32 - ((w * d) % 32);
if (endbits == 32) /* no partial word */
return 0;
fullwords = w * d / 32;
mask = rmask32[endbits];
if (val == 0)
mask = ~mask;
for (i = 0; i < h; i++) {
pword = data + i * wpl + fullwords;
if (val == 0) /* clear */
*pword = *pword & mask;
else /* set */
*pword = *pword | mask;
}
return 0;
}
示例12: localSearchForBackground
/*!
* localSearchForBackground()
*
* Input: &x, &y (starting position for search; return found position)
* maxrad (max distance to search from starting location)
* Return: 0 if bg pixel found; 1 if not found
*/
static l_int32
localSearchForBackground(PIX *pix,
l_int32 *px,
l_int32 *py,
l_int32 maxrad)
{
l_int32 x, y, w, h, r, i, j;
l_uint32 val;
x = *px;
y = *py;
pixGetPixel(pix, x, y, &val);
if (val == 0) return 0;
/* For each value of r, restrict the search to the boundary
* pixels in a square centered on (x,y), clipping to the
* image boundaries if necessary. */
pixGetDimensions(pix, &w, &h, NULL);
for (r = 1; r < maxrad; r++) {
for (i = -r; i <= r; i++) {
if (y + i < 0 || y + i >= h)
continue;
for (j = -r; j <= r; j++) {
if (x + j < 0 || x + j >= w)
continue;
if (L_ABS(i) != r && L_ABS(j) != r) /* not on "r ring" */
continue;
pixGetPixel(pix, x + j, y + i, &val);
if (val == 0) {
*px = x + j;
*py = y + i;
return 0;
}
}
}
}
return 1;
}
示例13: recogCreate
PIXA *MakeBootnum2(void)
{
char *fname;
l_int32 i, n, w, h;
BOX *box;
PIX *pix;
PIXA *pixa;
L_RECOG *recog;
SARRAY *sa;
/* Phase 1: generate recog from the digit data */
recog = recogCreate(20, 32, L_USE_ALL, 120, 1);
sa = getSortedPathnamesInDirectory("recog/bootnums", "png", 0, 0);
n = sarrayGetCount(sa);
for (i = 0; i < n; i++) {
/* Read each pix: grayscale, multi-character, labelled */
fname = sarrayGetString(sa, i, L_NOCOPY);
if ((pix = pixRead(fname)) == NULL) {
fprintf(stderr, "Can't read %s\n", fname);
continue;
}
/* Convert to a set of 1 bpp, single character, labelled */
pixGetDimensions(pix, &w, &h, NULL);
box = boxCreate(0, 0, w, h);
recogTrainLabelled(recog, pix, box, NULL, 1, 0);
pixDestroy(&pix);
boxDestroy(&box);
}
recogTrainingFinished(recog, 1);
sarrayDestroy(&sa);
/* Phase 2: generate pixa consisting of 1 bpp, single character pix */
recogWritePixa("/tmp/lept/recog/digits/bootnum2.pa", recog);
pixa = pixaRead("/tmp/lept/recog/digits/bootnum2.pa");
recogDestroy(&recog);
return pixa;
}
示例14: pixMultConstantGray
/*!
* pixMultConstantGray()
*
* Input: pixs (8, 16 or 32 bpp)
* val (>= 0.0; amount to multiply by each pixel)
* Return: 0 if OK, 1 on error
*
* Notes:
* (1) In-place operation; val must be >= 0.
* (2) No clipping for 32 bpp.
* (3) For 8 and 16 bpp, the result is clipped to 0xff and 0xffff, rsp.
*/
l_int32
pixMultConstantGray(PIX *pixs,
l_float32 val)
{
l_int32 w, h, d, wpl;
l_uint32 *data;
PROCNAME("pixMultConstantGray");
if (!pixs)
return ERROR_INT("pixs not defined", procName, 1);
pixGetDimensions(pixs, &w, &h, &d);
if (d != 8 && d != 16 && d != 32)
return ERROR_INT("pixs not 8, 16 or 32 bpp", procName, 1);
if (val < 0.0)
return ERROR_INT("val < 0.0", procName, 1);
data = pixGetData(pixs);
wpl = pixGetWpl(pixs);
multConstantGrayLow(data, w, h, d, wpl, val);
return 0;
}
示例15: Java_com_googlecode_leptonica_android_ReadFile_nativeReadBytes8
jlong Java_com_googlecode_leptonica_android_ReadFile_nativeReadBytes8(JNIEnv *env, jclass clazz,
jbyteArray data, jint w,
jint h) {
PIX *pix = pixCreateNoInit((l_int32) w, (l_int32) h, 8);
l_uint8 **lineptrs = pixSetupByteProcessing(pix, NULL, NULL);
jbyte *data_buffer = env->GetByteArrayElements(data, NULL);
l_uint8 *byte_buffer = (l_uint8 *) data_buffer;
for (int i = 0; i < h; i++) {
memcpy(lineptrs[i], (byte_buffer + (i * w)), w);
}
env->ReleaseByteArrayElements(data, data_buffer, JNI_ABORT);
pixCleanupByteProcessing(pix, lineptrs);
l_int32 d;
pixGetDimensions(pix, &w, &h, &d);
LOGI("Created image with w=%d, h=%d, d=%d", w, h, d);
return (jlong) pix;
}