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