Hallo,
ich weiß nicht ob ich in diesem Bereich richtig bin, aber da es mit Bildern zu tun hat, werde ich in der Multimedia-Abteilung richtig sein
Ich habe ein Problem: Ich möchte aus zeitlichen Gründen 5 Bilder gleichzeitig über 5 Threads Pixel für Pixel mit GetPixel() abtasten und die Farb-Werte dann in Arrays speichern. Jedes Bild ist 55 Px mal 54 Px groß.
Nur sobald ich einen 2. Thread gleichzeitig starte, funktioniert GetPixel() nicht mehr, bzw. die For-Schleife mit GetPixel().
Als Beispiel hier der Aufruf von 2 Threads:
Ein Thread sieht bei mir so aus:
Der 2. Thread entsprechend angepasst:
Ich lese die Rot-Werte, die Grün-Werte und die Blau-Werte einzeln aus, da mir aufgefallen ist, dass GetPixel() somit weniger Zeit braucht, als wenn ich alle Werte gleichzeitig auslesen würde. Desweiteren ist die Weiterverwendung für mich so einfacher, da ich später die einzelnen Farbkanäle untereinander vergleichen will anhand der Werte in den Arrays.
Es fällt auf, dass wenn ich 2 Threads am laufen habe im Debugger der Fortschritt von GetPixel() bei 0 bleibt. Wo steckt der Fehler?
Nicolas
ich weiß nicht ob ich in diesem Bereich richtig bin, aber da es mit Bildern zu tun hat, werde ich in der Multimedia-Abteilung richtig sein
Ich habe ein Problem: Ich möchte aus zeitlichen Gründen 5 Bilder gleichzeitig über 5 Threads Pixel für Pixel mit GetPixel() abtasten und die Farb-Werte dann in Arrays speichern. Jedes Bild ist 55 Px mal 54 Px groß.
Nur sobald ich einen 2. Thread gleichzeitig starte, funktioniert GetPixel() nicht mehr, bzw. die For-Schleife mit GetPixel().
Als Beispiel hier der Aufruf von 2 Threads:
Ein Thread sieht bei mir so aus:
VB.NET-Quellcode
-
- Dim Bild As Bitmap = CType(PictureBox1.Image, Bitmap)
- For i As Integer = 0 To 2862
- For X As Integer = 0 To 54
- For Y As Integer = 0 To 53
- RPB1(i) = Bild.GetPixel(X, Y).R.ToString
- GPB1(i) = Bild.GetPixel(X, Y).G.ToString
- BPB1(i) = Bild.GetPixel(X, Y).B.ToString
- Debug.WriteLine("PB1: " & i.ToString) 'Fortschritt von GetPixel()
- Next
- Next
- Next
- MsgBox("PB1 fertig!")
Der 2. Thread entsprechend angepasst:
VB.NET-Quellcode
-
- Public Sub BestimmeFarben2()
- Dim Bild As Bitmap = CType(PictureBox2.Image, Bitmap)
- For i As Integer = 0 To 2862
- For X As Integer = 0 To 54
- For Y As Integer = 0 To 53
- RPB2(i) = Bild.GetPixel(X, Y).R.ToString
- GPB2(i) = Bild.GetPixel(X, Y).G.ToString
- BPB2(i) = Bild.GetPixel(X, Y).B.ToString
- Debug.WriteLine("PB2: " & i.ToString)
- Next
- Next
- Next
- IO.File.WriteAllLines("array.txt", GPB2)
- MsgBox("PB2 fertig!")
- End Sub
Ich lese die Rot-Werte, die Grün-Werte und die Blau-Werte einzeln aus, da mir aufgefallen ist, dass GetPixel() somit weniger Zeit braucht, als wenn ich alle Werte gleichzeitig auslesen würde. Desweiteren ist die Weiterverwendung für mich so einfacher, da ich später die einzelnen Farbkanäle untereinander vergleichen will anhand der Werte in den Arrays.
Es fällt auf, dass wenn ich 2 Threads am laufen habe im Debugger der Fortschritt von GetPixel() bei 0 bleibt. Wo steckt der Fehler?
Nicolas