Seite 1 von 1

string nach 3d array

Verfasst: Donnerstag 27. Mai 2004, 17:20
von unstable
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

Verfasst: Donnerstag 27. Mai 2004, 18:03
von Dookie
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

Verfasst: Donnerstag 27. Mai 2004, 20:48
von unstable
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

Verfasst: Donnerstag 27. Mai 2004, 21:35
von Dookie
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]

so gehts

Verfasst: Freitag 28. Mai 2004, 16:26
von unstable
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')