string nach 3d array

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
unstable
User
Beiträge: 4
Registriert: Donnerstag 27. Mai 2004, 17:08

hallo,

weiss einer von euch wie man einen string nach einem 3d array umsetzt?
ich habe ein bild in einem string in einem file gesetzt, und jetzt muss ein anderer computer/program es umsetzten in ein 3d array.
hier ein kleines stück aus den string:
-----
('xq,aZ\x15ng)rk-vo8tm6oh7mf5lb;_U.VL\x1eSI\x1bSH\x16[P\x1eeZ!mb){m0}o2~t2\x81w5\x82{6\x81z5\x7f|3\x7f|3}|2}|2~}3\x7f~4\x81\x806\x81\x806\x81\x806\x81\x806\x81\x806\x81\x806\x82\x825\x82\x825\x83\....
-----
es sind x-y coordinaten, und rgb farben.
es muss so aussehen:
L[x][y][rgb]

brauche hilfe ,
unstable
why bother with a sig?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi unstable,

in welcher Bittiefe sind die einzelnen Werte?
x und y in je 16 und rgb in 24 Bit?

dann ginge das so:

Code: Alles auswählen

def to_list(str):
    result = []
    i = 0:
    while i < len(str):
        tmp = [ord(str[i])*256 + ord(str[i+1]),
               ord(str[i+2])*256 + ord(str[i+3]),
               [ord(str[i+4]), ord(str[i+5]), ord(str[i+6])]]
        result.append(tmp)
        i += 7
    return result
es muss dann noch big- und littleendian berücksichtigt werden und eventuell die *256 beim rechten ord(str[...]) gemacht werden statt beim linken.


Gruß

Dookie
unstable
User
Beiträge: 4
Registriert: Donnerstag 27. Mai 2004, 17:08

ich probere 2d und 3d arrays zu machen.
aber es geht nicht in Python.
kann das sein?
oder gibt es einen trick?
ich will so einen array: L[][][]
also 3d.
2d wäre für den anfang auch nicht schlecht. ( L[][] )

thx,
unstable

ps. ich weiss nicht in welcher bittiefe die werte sind...
wo sieht man das?

edit: es sieht doch nach 24 bit aus bei rgb
why bother with a sig?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi nochmal,

sicher gehts auch mit 3DArrays,

Code: Alles auswählen

dreiD=[[[1, 2, 3],[4, 5, 6],[7, 8, 9]],[[10, 11, 12],[13, 14, 15],[16, 17, 18]]]
print dreiD[0][2][1]
Also einfach die Listen verschachteln.
Zu dem String, ist in dem Fall wohl eher ein Bytearray, wo kommt der her? Dann kann man vielleicht rausfinden wie die Daten abgelegt sind.


Gruß

Dookie

[/code]
unstable
User
Beiträge: 4
Registriert: Donnerstag 27. Mai 2004, 17:08

ich habe rausgefunden wie es geht.
man setzt nicht in einen array, sondern in 3 einzelnen werte:

import Image
from VideoCapture import Device
cam = Device()
cam.setResolution(640,480)
buffer, width, height = cam.getBuffer()
im = Image.fromstring('RGB', (width, height), buffer, 'raw', 'BGR', 0, -1)
im.save('jooo.jpg')
why bother with a sig?
Antworten