in OpenCV when you want to create an image you do this
IplImage* img=cvCreateImage(cvGetSize(imgHSV),IPL_DEPTH_8U, 1);
Code: Select all
Code: Select all
img=cvCreateImage(cvGetSize(imgHSV),IPL_DEPTH_8U, 1);
Code: Select all
IplImage* img;
with this successfully
Code: Select all
;; 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)))
Code: Select all
IplImage* img;
Code: Select all
(img (create-image sz +ipl-depth-8u+ 3))
Code: Select all
(ipl-image img)
Code: Select all
(img (create-image sz +ipl-depth-8u+ 3))
I tried writing a glue wrapper in c
Code: Select all
IplImage* IplImage_glue(int img)
{
return (IplImage *) img;
}
Code: Select all
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))
Code: Select all
Unhandled memory fault at #x0.
[Condition of type SB-SYS:MEMORY-FAULT-ERROR]