Hay Leute, ich hab ein Bild und möchte das gerne in ein Array packen um dann schneller Berechnungen, wie z.B. Suchen von Flächen durchführen zu können. Ich hoffe die Idee ist erstmal sinnvoll!
Jetzt habe ich folgenden Code, der mir das Bild in das Array speichert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| for J := 0 to Form1.Anzeige.Picture.Bitmap.Height - 1 do begin Row := Form1.Anzeige.Picture.Bitmap.ScanLine[J]; for I := 0 to Form1.Anzeige.Picture.Bitmap.Width - 1 do begin bild[I, J]:= Row^.rgbtRed; Inc(Row); end; end; |
Um das gleich zu klären, das Bild ist grau - jeder Farbwert egal ob blau grün oder rot ist also gleich!
Ich kann jetzt natürlich das ganze runternehmen auf ein Array of Integer, aber ich möchte eigentlich mit den einzelnen Farbwerten arbeiten.
Dieser Algorithmus braucht 7 sekunden - und das ist zu lange! Darum die Frage, wie man ihn optimieren könnte.
Stichwort "Scanline"?
Vielen Dank
//so schon etwas verbessert - trotzdem noch Ideen?