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.
Benutzeravatar
unstable
User
Beiträge: 4
Registriert: Donnerstag 27. Mai 2004, 17:08

string nach 3d array

Beitragvon unstable » Donnerstag 27. Mai 2004, 17:20

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?
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Donnerstag 27. Mai 2004, 18:03

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
Benutzeravatar
unstable
User
Beiträge: 4
Registriert: Donnerstag 27. Mai 2004, 17:08

Beitragvon unstable » Donnerstag 27. Mai 2004, 20:48

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?
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Donnerstag 27. Mai 2004, 21:35

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]
Benutzeravatar
unstable
User
Beiträge: 4
Registriert: Donnerstag 27. Mai 2004, 17:08

so gehts

Beitragvon unstable » Freitag 28. Mai 2004, 16:26

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?

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], mollyman