I can't seem to define a function that one of its arguments it's a pointer (a function that initialize the structure). I'm also having troubles with using the SR_GetImage that returns a void* pointer.
My code is as follows:
import numpy
cdef extern from "libMesaSR.h":
ctypedef SRCAM
int SR_OpenUSB(SRCAM * cam, unsigned int serial)
int SR_ReadSerial(SRCAM cam)
int SR_GetRows(SRCAM cam)
int SR_GetCols(SRCAM cam)
void * SR_GetImage(SRCAM cam, unsigned int i)
cdef class MesaSR:
cdef SRCAM cam
cdef int cols
cdef int rows
cdef object range_image
def __init__(self, serial):
status = SR_OpenUSB(&self.cam, serial)
self.cols = SR_GetCols(self.cam)
self.rows = SR_GetRows(self.cam)
self.range_image = numpy.empty([self.rows, self.cols], 'H')
def get_image(self):
cdef void * images
cdef unsigned int value
image = SR_GetImage(self.cam, 0)
for 0 <= i < self.cols:
for 0 <= j <self.rows:
value = image[i + j*self.cols]
self.range_image[j][i] = value
And I'm getting:
mesasr.pyx:5:22: Pointer base type cannot be a Python object
mesasr.pyx:18:22: Cannot take address of Python variable
mesasr.pyx:26:21: Cannot convert 'void *' to Python object
Am I missing something?
--
Javier Correa
Por favor, no imprimas este e-mail si realmente no lo necesitas... Conservar el medio ambiente es nuestra tarea...
Please, don't print this e-mail if it's not needed... preserve the environment is our task...