I think I'm starting to narrow it down.
I made the following python extension module by hand and it works. I can
pass any value (0, 1, 2, or 3) to the function exttest.test() in python and
they all work properly.
#------------- exttest.c ---------------------#
#include "Python.h"
#include "highgui.h"
#include "cxcore.h"
#include "cv.h"
static PyObject* run_test(PyObject* self, PyObject* args)
{
int val;
if (!PyArg_ParseTuple(args, "i", &val)){
return NULL;
}
IplImage* img = cvLoadImage("2.bmp", 1);
IplImage* img2 = cvCreateImage(cvSize(640, 480), img->depth,
img->nChannels);
cvResize(img, img2, val);
cvNamedWindow("test", 1);
cvShowImage("test", img2);
cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&img);
cvReleaseImage(&img2);
Py_RETURN_NONE;
}
static PyMethodDef exttestMethods[] =
{{"test", run_test, METH_VARARGS, "some test"},{NULL, NULL, 0, NULL}};
PyMODINIT_FUNC initexttest(void)
{
(void) Py_InitModule("exttest", exttestMethods);
}
#------------------ setup.py build ---------------------#
from distutils.core import setup, Extension
library_dirs=["C:\\OpenCVsvn\\build\\lib"]
include_dirs=["C:\\OpenCVsvn\\build\\include\\opencv"]
libraries = ["highgui110", "cxcore110", "cv110"]
module1 = Extension('exttest', sources = ['exttest.c'],
libraries=libraries,
library_dirs=library_dirs, include_dirs=include_dirs)
setup (ext_modules = [module1])
Now, If I go back to the Cython generated .c file and copy this into its
body (removing all other code), and build the .c file with an equivalent
setup.py it still fails on integers 1 and 2 (but not 0 and 3)
#------------ code substituted into cython c file -------------- #
static PyObject *__pyx_pf_5cy_cv_cvResize(PyObject *__pyx_self, PyObject
*__pyx_args, PyObject *__pyx_kwds)
{
int val = 1;
IplImage* img = cvLoadImage("2.bmp", 1);
IplImage* img2 = cvCreateImage(cvSize(640, 480), img->depth,
img->nChannels);
cvResize(img, img2, val);
cvNamedWindow("test", 1);
cvShowImage("test", img2);
cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&img);
cvReleaseImage(&img2);
Py_RETURN_NONE;
}
So, I think I've ruled out a compiler issue. Any pointers on where to look
now?
Cheers!
Chris
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev