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
|
LPVOID CALLBACK CCaptureVideoDlg::EROSION(HWND hWndC, LPVIDEOHDR pV)
{
long p,i,j,c,l,cc,ll;
long Taille = pDial->m_largeur * pDial->m_hauteur;
int tc,tl;
tc=1;
tl=1;
BYTE min;
// passage en niveau de gris
BYTE *pImNb;
pImNb=(BYTE *) malloc(Taille);
BYTE *pTemp;
pTemp=(BYTE *) malloc(Taille);
i=0;
for (j=0;j<Taille;j++)
{
ici-> pImNb[j]=(pV->lpData[i]+pV->lpData[i+1]+pV->lpData[i+2])/3.0;
i+=3;
pTemp[j]=0;
}
for (l=tl;l<pDial->m_hauteur-tl-1;l++)
{
for (c=tc;c<pDial->m_largeur-tc-1;c++)
{
min=255;
for (ll=l-tl;ll<=l+tl;ll++)
{
for (cc=c-tc;cc<=c+tc;cc++)
{
p=pDial->m_largeur*(ll)+cc;
if (pImNb[p]<min) min = pImNb[p];
}
}
pTemp[pDial->m_largeur*l+c]=min;
}
}
i=0;
for (j=0;j<Taille;j++)
{
ici-> pV->lpData[i]=pTemp[j];
pV->lpData[i+1]=pTemp[j];
pV->lpData[i+2]=pTemp[j];
i+=3;
}
free(pImNb);
free(pTemp);
return 0;
} |
Partager