Ich mache einige Cython-Wrapping und es kommt, dass ich einen Zeiger auf ein Array von nicht signierten Zeichen in ein numpy Array konvertieren muss. Keine der Methoden, die ich versucht habe, hat funktioniert. Außerdem würde ich es lieber tun, ohne die Daten tatsächlich zu kopieren, wenn das möglich ist.Pointer in Array von unsignierten Chars zu Numpy Array konvertieren
Hier ist die Funktion in Frage, mit der ich mich beschäftigt habe.
def getImage(self):
cdef int size = self.c_cam.getResolution()[0]*self.c_cam.getResolution()[1]*3
return np.ctypeslib.as_array(self.c_cam.getImage(), shape=size*sizeof(unsigned char))
self.c_cam.getImage() gibt einen Zeiger auf die Array-Daten (als ein Mitglied der Klasse gespeichert c_cam) Jedoch wirft diese
AttributeError: 'str' object has no attribute '__array_interface__'
bei der Ausführung. Obwohl ich ehrlich gesagt nicht weiß, wie es funktionieren würde, weil nichts den Datentyp angibt.
EDIT: Also habe ich folgendes mindestens Arbeit
cdef unsigned char* data = self.c_cam.getImage()
dest = np.empty(size)
for i in range(0,size):
dest[i] = <int> data[i]
return dest
bekommen aber offensichtlich handelt es sich dabei um die Daten zu kopieren, damit ich noch einen anderen Weg finden wollen würde, dies zu tun.