Mam taki wycinek programu dający filtr do obrazka, ale filtr nie daje żadnych zmian. Ładujacy obrazek daje na 3 panele.
double GPrzep[9],P[9];
int x,y,u,w;
TColor k;
double suma = 0, R = 0;
if (Image2->Picture->Bitmap->Width == 0)
{
Application->MessageBox("Najpierw otworz plik.", "Błąd pliku", MB_OK);
}
else
ProgressBar1->Position=0;
ProgressBar1->Max=Image2->Picture->Bitmap->Width;
for(x=1;x<Image2->Picture->Bitmap->Width-1;x++)
{
for(y=1;y<Image2->Picture->Bitmap->Height-1;y++)
{
for (u=0;u<8;u++)
{
//filtr
GPrzep[0] = GPrzep[2] = GPrzep[6] = GPrzep[8] = 1;
GPrzep[1] = GPrzep[3] = GPrzep[5] = GPrzep[7] = -2;
GPrzep[4] = 5;
suma = GPrzep[0] + GPrzep[3] + GPrzep[6] + GPrzep[8] + GPrzep[1] +
GPrzep[3] + GPrzep[5] + GPrzep[7] + GPrzep[4];
P[0] = Image2->Picture->Bitmap->Canvas->Pixels[x-1][y+1];
P[1] = Image2->Picture->Bitmap->Canvas->Pixels[x][y+1];
P[2] = Image2->Picture->Bitmap->Canvas->Pixels[x+1][y+1];
P[3] = Image2->Picture->Bitmap->Canvas->Pixels[x-1][y];
P[4] = Image2->Picture->Bitmap->Canvas->Pixels[x][y];
P[5] = Image2->Picture->Bitmap->Canvas->Pixels[x+1][y];
P[6] = Image2->Picture->Bitmap->Canvas->Pixels[x-1][y-1];
P[7] = Image2->Picture->Bitmap->Canvas->Pixels[x-1][y];
P[8] = Image2->Picture->Bitmap->Canvas->Pixels[x+1][y-1];
R = GetRValue(P[u]);
P[u]=R;
k += GPrzep[u] * P[u];
k /= suma ;
k = RGB(k,k,k);
Image3->Picture->Bitmap->Canvas->Pixels[x][y]= k;
}
ProgressBar1->Position=x;
}
ProgressBar1->Position=0;
}
Image3->Picture->Bitmap = Image2->Picture->Bitmap;