convert numpy array to cython pointer

cython, numpy, python

Solution

thanks for your comments. solved by:

cdef np.ndarray[np.uint32_t, ndim=3, mode = 'c'] np_buff = np.ascontiguousarray(im, dtype = np.uint32)
cdef unsigned int* im_buff = <unsigned int*> np_buff.data

Problem

I have a numpy array which came from a `cv2.imread` and so has `dtype = np.uint8` and `ndim = 3`. I want to convert it to a Cython `unsigned int*` for use with an external cpp library. I am trying `cdef unsigned int* buff = <unsigned int*>im.data` however I get the error `Python objects cannot be cast to pointers of primitive types` What am I doing wrong? Thanks

Original source

Related problems