Ich bin hier an einer Routine zum Offscreen-Drawing für eine LED-Matrixanzeige am Verzweifeln. Ohne dass ich eine Idee hätte, warum, steigt das Programm immer an der gekennzeichneten Stelle mit der Meldung aus: 'int' object not iterable. Bin kurz davor, aus dem Fenster zu springen ... hat jemand einen Tip? Danke. def SetImage(img,mx): (w,h) = img.size pix = img.load() offscreenCanvas = mx.CreateFrameCanvas() for x in range(w): for y in range(h): (r, g, b) = pix[x,y] <======================== offscreenCanvas.SetPixel(x,y,r,g,b) sleep(0.015) offscreenCanvas = mx.SwapOnVSync(offscreenCanvas)
Was sagt type(pix[x,y]) ? Das scheint ein einfaches int zu sein.
1 | |
2 | |
3 | |
4 | |
5 | |
Gast
#4598907
Ich nehme mal an, es ist ok, pix mit einem Tupel zu indizieren (pix wird bestimmt nicht der Integer sein, um den es in der Fehlermeldung geht). D.h. die Fehlermeldung kommt daher, dass du pix[x,y] in (r,g,b) auspacken willst. Wenn pix[x,y] eine Zahl ist, dann liegt die Vermutung nahe, dass es r<<16|g<<8|b ist, evtl. auch noch mit einem Alpha-Wert. Reihenfolge evtl. auch anders. Details müssten in der Dokumentation zu deiner Library (die du nicht genannt hast) stehen.
Den Code habe ich von hier: https://github.com/maddogs/RGB-LED-Matrix-Images/blob/master/display-image.py
Das geladene Bild ist kein RGB- sondern ein Graustufenbild oder eins mit indizierten Farben (Farbpalette). Für diese Bilder hat jedes Pixel nur einen einzelnen Zahlenwert, der auch als solcher in PIL auftaucht.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.