Ma pewien problem z wątkiem.
W normalnym wywołaniu moja procedura działa bez problemu. Moze znajdzie ktos jakis blad.
Ogolnie chodzi o to, zeby wyciagnac obraz z listy "listaAVI1" i porownac kazdy pixel z tego obrazu z obrazem testowy - w moim przypadku z pierwszym obrazem na tej liscie. Nowy obraz ma wstawic do nowej listy. Niestety wstawia mi puste obrazy, lub losowo jakis i nie mam pojecia skad on go wzial.
Procedure TMojWatek.Postep;
begin
Form1.Gauge1.Progress:=trunc((i*100)/(z));
end;
Procedure TMojWatek.Modyfikacja;
begin
Form1.ListBox1.Items.AddObject('Segmentacja ' + IntToStr(i), wynik);
end;
procedure TMojWatek.Wstaw_tlo;
begin
Form1.ListBox1.Items.AddObject('Obraz tla',tlo);
end;
procedure TMojWatek.Execute;
var
kolor1, kolor2 : real;
kolor_2 : TColor;
begin
FreeOnTerminate:=True;
Form1.ListBox1.Clear;
k:=Form1.listaavi1.Count;
tlo:=TBitmap(Form1.listaAVI1.Items.Objects[0]);
Synchronize(Wstaw_tlo);
z:=liczba;
For i:=1 to z do
begin
temp:=TBitmap(Form1.listaAVI1.Items.Objects[i]);
wynik:=temp;
for x:=0 to a_s do
begin
for y:=0 to a_w do
begin
kolor_2:=temp.Canvas.Pixels[x,y];
kolor1:=0.299*Getrvalue(kolor_2)+0.587*Getgvalue(kolor_2)+0.114*Getbvalue(kolor_2);
kolor_2:=tlo.Canvas.Pixels[x,y];
kolor2:=0.299*Getrvalue(kolor_2)+0.587*Getgvalue(kolor_2)+0.114*Getbvalue(kolor_2);
if (abs(kolor1-kolor2)<(dokladnosc)) then
begin
wynik.Canvas.Pixels[x,y]:=rgb(0,255,0);
end
end;
end;
Synchronize(Modyfikacja);
Synchronize(Postep);
end;
end;
Czy zmienne globalne sa przez watek normalnie widziane ??
Z gory dziekuje za jakkakolwiek pomoc.