I've never used valgrind before. Any pointers?

I went back to the Cython generated C source and explicitly included the
appropriate header file and explicitly passed CV_INTER_LINEAR (defined as 1)
to the C function call. Same story, it crashes.

I've gone line by line now through the Cython code for that function and I
cant see anything wrong. You have any ideas I could try?

Thanks!

Chris

On Wed, May 27, 2009 at 10:49 AM, Lisandro Dalcin <[email protected]> wrote:

> On Wed, May 27, 2009 at 11:36 AM, Chris Colbert <[email protected]>
> wrote:
> > sometimes the docs are a bit dated. But nonetheless, those constants are
> > just integers defines in the header files and is where I got the values
> 0-4,
> > I used the integers in the example just to make it a bit more clear. But
> 0-4
> > are valid constants for the call, as they worked in the pure C example.
>
> Mmm... they I have no idea what's going on... Did you try to run under
> valgrind? That usually works for me...
>
> > What you showed for exposing the constants however, is interesting, I
> have
> > been just defining the constants as module level python integers so they
> can
> > be used from python. If defined as an enum as you show, will they
> > be accessible from python?
> >
>
> No, you have to explicitly expose them. If you declared them in some
> pxd, let say "mycvdefs.pxd", you can write in "mycvmodule.pyx"
>
> CV_SOME_CONSTANT = mycvdefs.CV_SOME_CONSTANT
>
>
>
>
>
> > Chris
> >
> > On Wed, May 27, 2009 at 9:40 AM, Lisandro Dalcin <[email protected]>
> wrote:
> >>
> >> According to the docs,
> >>
> >>
> http://opencv.willowgarage.com/wiki/CvReference#Sampling.2CInterpolationandGeometricalTransforms
> ,
> >> There are 4 possible values (you mention 5). Is that OpenCV
> >> documentation dated? IMHO, you should use them. To expose these
> >> constants in Cython code (likely in some pxd), you can do this:
> >>
> >> cdef extern from ....:
> >>
> >>    enum: CV_INTER_NN
> >>    enum: CV_INTER_LINEAR
> >>    enum: CV_INTER_AREA
> >>    enum: CV_INTER_CUBIC
> >>
> >>
> >>
> >> On Wed, May 27, 2009 at 12:57 AM, Chris Colbert <[email protected]>
> >> wrote:
> >> > So I'm wrapping the OpenCV library in Cython and its coming along
> quite
> >> > nicely (thanks to everyone here for getting me up to speed!), but
> today
> >> > I've
> >> > run across a strange issue where a wrapped function fails for certain
> >> > values
> >> > of integer arguments, but a pure c implementation testing the same
> thing
> >> > with the same arguments works.
> >> > Here is the code excerpts im using:
> >> > #---------- .pyx ------------------#
> >> > def cvResize(cy_cvtypes.CvArr src, cy_cvtypes.CvArr dst,
> interpolation):
> >> >     cdef c_cxcore.CvArr* c_src = src.handle()
> >> >     cdef c_cxcore.CvArr* c_dst = dst.handle()
> >> >     cdef int c_interpolation = interpolation
> >> >     with nogil:
> >> >         c_cv.cvResize(c_src, c_dst, c_interpolation)
> >> > #-------- c_cv.pxd -----------------#
> >> > cdef extern from "cv.h":
> >> >     void cvResize(CvArr* src, CvArr* dst, int interpolation) nogil
> >> >
> >> > #--------- test.py -----------------#
> >> > from cyopencv import *
> >> > if __name__=='__main__':
> >> >     img = cvLoadImage('2.bmp')
> >> >     img2 = cvCreateImage((640, 480), img.depth, img.nChannels)
> >> >     cvResize(img, img2, 3)
> >> >     img2.show()
> >> >
> >> >
> >> > #--------- pureC.c -----------#
> >> > #include "highgui.h"
> >> > #include "cv.h"
> >> > #include "cxcore.h"
> >> > #include "cxtypes.h"
> >> > int main(void)
> >> > {
> >> >     IplImage* img, *img2;
> >> >     img = cvLoadImage("2.bmp", 1);
> >> >     img2 = cvCreateImage(cvSize(640, 480), img->depth,
> img->nChannels);
> >> >     cvResize(img, img2, 3);
> >> >     cvNamedWindow("test", 1);
> >> >     cvShowImage("test", img2);
> >> >     cvWaitKey(0);
> >> >     cvDestroyAllWindows();
> >> >     cvReleaseImage(&img);
> >> >     cvReleaseImage(&img2);
> >> > }
> >> >
> >> >
> >> > valid integers for the argument 'interpolation' are 0, 1, 2, 3, 4 (as
> >> > tested
> >> > with the C function). My Cython wrapper fails with a Python crash for
> >> > integer values 1 & 2.  Values of 0,1,4 work properly and the output
> >> > image
> >> > matches the output image of the C test function under the same
> >> > conditions.
> >> > I've looked at the generated Cython code and everything seems in
> order,
> >> > I
> >> > just can't think of what could be causing this behavior.
> >> > Any thoughts?
> >> > Cheers!
> >> > Chris
> >> >
> >> > _______________________________________________
> >> > Cython-dev mailing list
> >> > [email protected]
> >> > http://codespeak.net/mailman/listinfo/cython-dev
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >> Lisandro Dalcín
> >> ---------------
> >> Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
> >> Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
> >> Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
> >> PTLC - Güemes 3450, (3000) Santa Fe, Argentina
> >> Tel/Fax: +54-(0)342-451.1594
> >> _______________________________________________
> >> Cython-dev mailing list
> >> [email protected]
> >> http://codespeak.net/mailman/listinfo/cython-dev
> >
> >
> > _______________________________________________
> > Cython-dev mailing list
> > [email protected]
> > http://codespeak.net/mailman/listinfo/cython-dev
> >
> >
>
>
>
> --
> Lisandro Dalcín
> ---------------
> Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
> Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
> Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
> PTLC - Güemes 3450, (3000) Santa Fe, Argentina
> Tel/Fax: +54-(0)342-451.1594
> _______________________________________________
> Cython-dev mailing list
> [email protected]
> http://codespeak.net/mailman/listinfo/cython-dev
>
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to