ich bräuchte ein bisschen Hilfe biem Auslesen eines Speicherbereichs.
Ich habe folgendes Problem:
Eine Funktion einer dll bietet eine Funktion, die ein Rohdaten-Bild, in drei RGB Werte/Pixel konvertiert und einen Pointer auf einen Speicherbereich zurückliefert, wo dann das ergebnis liegen soll.
Leider hab ich keine Ahnung, wie ich auf die Werte der jeweiligen Pixel zugreifen kann.
Ich bekomme immer nur die Adresse auf das LP_c_ushort Objekt zurück.
Eingebaut habe ich das ganze momentan so:
Code: Alles auswählen
#XResAct = 1920, YResAct = 1440
IMG = (POINTER(ctypes.c_ushort) * XResAct.value *YResAct.value*3)() #Zielspeicher
#BufRef = Erklärung: Dort liegt das Rohdaten Bild
iRet = Convert16TOCOL(conv_handle, 0,2,XResAct.value, YResAct.value, byref(BufAdr), byref(IMG))
print("...converting image:", MErrText.MCAM_GetError(iRet)) #prüfen ob Konvertierung geklappt hat
Code: Alles auswählen
print("Check ptr", bool(IMG))
Ich dachte eigentlich ich könnte jetzt einfach auf die Pixelwerte zugreife. So etwa:
Code: Alles auswählen
#Beispiel Pixel Farbe holen:
tmp_r = IMG[x][y][0]
tmp_g = IMG[x][y][1]
#...
TmpRed = tmp_r.value
TmpGreen = tmp_g.value
#...
klappt auch nicht. Und IMG[x][y][z] liefert immer nur einen Verweis auf das Objekt, nicht den Inhalt.
Langsam bin ich frustriert.
Wie geht das denn richtig? Wie komme ich an den Inhalt der Elemente von IMG ran?
Danke für Eure Hilfe!
Gruß!