Help wrapping this struct?

not sure of the wording on this so pls bear with me in OpenCV when you want to create an image you do this IplImage* img=cvCreateImage(cvGetSize(imgHSV),IPL_DEPTH_8U, 1); or you can do this img=cvCreateImage(cvGetSize(imgHSV),IPL_DEPTH_8U, 1); if you've already called the below first IplImage* img; my question is...since i already wrapped cvCreateImage with this successfully ;; IplImage* cvCreateImage(CvSize size, int depth, int channels) (cffi:defcfun ("cvCreateImage" %create-image) (:pointer (:struct ipl-image)) (size :int64) (depth :int) (channels :int)) (defun create-image (size depth channels) "Create an image with dimensions given by SIZE, DEPTH bits per channel, and CHANNELS number of channels." (let ((nsize (size->int64 size))) (%create-image nsize depth channels))) and i use it all the time successfully, converting c opencv code into lisp in many programs...and have never once did this IplImage* img; I always call it in a let like this (img (create-image sz +ipl-depth-8u+ 3)) but if i wanted to expose this kind of functionality in lisp where i would call i/e (ipl-image img) first before calling(img (create-image sz +ipl-depth-8u+ 3)) how would i do that I tried writing a glue wrapper in c IplImage* IplImage_glue(int img) { return (IplImage *) img; } here is my repl history after that was compiled into a .so(ubuntu raring) CL-OPENCV> ;; IplImage* IplImage_glue(IplImage* img); (cffi:defcfun ("IplImage_glue" ipl-image) (:pointer (:struct ipl-image)) (img (:pointer (:struct ipl-image)))) IPL-IMAGE CL-OPENCV> (dp img (cffi:null-pointer)) IMG CL-OPENCV> (ipl-image img) #.(SB-SYS:INT-SAP #X00000000) CL-OPENCV> (cffi:with-foreign-slots ((n-size) img (:struct ipl-image)) (format t "n-size = ~a~%" n-size)) every thing runs up until the with-foreign-slots then.. Unhandled memory fault at #x0. [Condition of type SB-SYS:MEMORY-FAULT-ERROR] ..i assume because im not accessing a ipl-image struct pointer but maybe i am.....any help is appreciated
participants (1)
-
Joeish W