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
| int lrezize(struct xvimage * image1,struct xvimage * image2, int xmin, int xmax, int ymin, int ymax)
/* ajoute une constante a une image - seuil si depassement */
/* ==================================== */
#undef F_NAME
#define F_NAME "laddconst"
{
int i,j,k;
unsigned char *pt1, *pt2;
unsigned long *lpt1,*lpt2;
float *fpt1, *fpt2;
int rs1, rs2, cs1, cs2, d, N;
rs1 = rowsize(image1);
rs2 = rowsize(image2);
cs1 = colsize(image1);
cs2 = colsize(image2);
d = depth(image1);
N = rs1 * cs1 * d;
printf("dimension %d\n",d);
/* ---------------------------------------------------------- */
/* calcul du resultat */
/* ---------------------------------------------------------- */
if (datatype(image1) == VFF_TYP_1_BYTE)
{
pt1 = UCHARDATA(image1);
pt2 = UCHARDATA(image2);
for(k= 0; k<d; k++)
for (j = ymin; j <ymax; j++)
for (i = xmin; i < xmax; i++)
pt2[(j-ymin)*rs2 + i-xmin + k*rs2*cs2 ] = pt1[ j*rs1 + i + k*rs1*cs1];
}
else if (datatype(image1) == VFF_TYP_4_BYTE)
{
lpt1 = ULONGDATA(image1);
lpt2 = ULONGDATA(image2);
for(k= 0; k<d; k++)
for (j = ymin; j <ymax; j++)
for (i = xmin; i < xmax; i++)
lpt2[(j-ymin)*rs2+i-xmin+ k*rs2*cs2] = lpt1[ j*rs1 +i+k*rs1*cs1];
}
else if (datatype(image1) == VFF_TYP_FLOAT)
{
fpt1 = FLOATDATA(image1);
fpt2 = FLOATDATA(image2);
for(k= 0; k<d; k++)
for (j = ymin; j <ymax; j++)
for (i = xmin; i < xmax; i++)
{
fpt2[(j-ymin)*rs2+i-xmin+k*rs2*cs2] = fpt1[ j*rs1 +i+k*rs1*cs1];
}
}
else
{
fprintf(stderr, "%s: bad image type(s)\n", F_NAME);
return 0;
}
return 1;
} /* laddconst() */ |
Partager