mirror of
https://github.com/opencv/opencv.git
synced 2025-06-10 19:24:07 +08:00
disable implicit numpy array use in old-style Python bindings because of hard-to-fix memory leaks (ticket #1177)
This commit is contained in:
parent
3f40a1d8c3
commit
e2e4ee2f53
@ -1600,15 +1600,15 @@ static int convert_to_CvMat(PyObject *o, CvMat **dst, const char *name)
|
|||||||
Py_ssize_t buffer_len;
|
Py_ssize_t buffer_len;
|
||||||
|
|
||||||
if (!is_cvmat(o)) {
|
if (!is_cvmat(o)) {
|
||||||
#if !PYTHON_USE_NUMPY
|
//#if !PYTHON_USE_NUMPY
|
||||||
return failmsg("Argument '%s' must be CvMat", name);
|
return failmsg("Argument '%s' must be CvMat. Use fromarray() to convert numpy arrays to CvMat", name);
|
||||||
#else
|
/*#else
|
||||||
PyObject *asmat = fromarray(o, 0);
|
PyObject *asmat = fromarray(o, 0);
|
||||||
if (asmat == NULL)
|
if (asmat == NULL)
|
||||||
return failmsg("Argument '%s' must be CvMat", name);
|
return failmsg("Argument '%s' must be CvMat", name);
|
||||||
// now have the array obect as a cvmat, can use regular conversion
|
// now have the array obect as a cvmat, can use regular conversion
|
||||||
return convert_to_CvMat(asmat, dst, name);
|
return convert_to_CvMat(asmat, dst, name);
|
||||||
#endif
|
#endif*/
|
||||||
} else {
|
} else {
|
||||||
m->a->refcount = NULL;
|
m->a->refcount = NULL;
|
||||||
if (m->data && PyString_Check(m->data)) {
|
if (m->data && PyString_Check(m->data)) {
|
||||||
@ -1666,15 +1666,15 @@ static int convert_to_CvArr(PyObject *o, CvArr **dst, const char *name)
|
|||||||
} else if (is_cvmatnd(o)) {
|
} else if (is_cvmatnd(o)) {
|
||||||
return convert_to_CvMatND(o, (CvMatND**)dst, name);
|
return convert_to_CvMatND(o, (CvMatND**)dst, name);
|
||||||
} else {
|
} else {
|
||||||
#if !PYTHON_USE_NUMPY
|
//#if !PYTHON_USE_NUMPY
|
||||||
return failmsg("CvArr argument '%s' must be IplImage, CvMat or CvMatND", name);
|
return failmsg("CvArr argument '%s' must be IplImage, CvMat or CvMatND. Use fromarray() to convert numpy arrays to CvMat or cvMatND", name);
|
||||||
#else
|
/*#else
|
||||||
PyObject *asmat = fromarray(o, 0);
|
PyObject *asmat = fromarray(o, 0);
|
||||||
if (asmat == NULL)
|
if (asmat == NULL)
|
||||||
return failmsg("CvArr argument '%s' must be IplImage, CvMat, CvMatND, or support the array interface", name);
|
return failmsg("CvArr argument '%s' must be IplImage, CvMat, CvMatND, or support the array interface", name);
|
||||||
// now have the array obect as a cvmat, can use regular conversion
|
// now have the array obect as a cvmat, can use regular conversion
|
||||||
return convert_to_CvArr(asmat, dst, name);
|
return convert_to_CvArr(asmat, dst, name);
|
||||||
#endif
|
#endif*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -940,8 +940,8 @@ class AreaTests(OpenCVTests):
|
|||||||
|
|
||||||
# Using an array object for a CvArr parameter
|
# Using an array object for a CvArr parameter
|
||||||
ones = numpy.ones((640, 480))
|
ones = numpy.ones((640, 480))
|
||||||
r = numpy.ones((640, 480))
|
r = cv.fromarray(numpy.ones((640, 480)))
|
||||||
cv.AddS(ones, 7, r)
|
cv.AddS(cv.fromarray(ones), 7, r)
|
||||||
self.assert_(numpy.alltrue(r == (8 * ones)))
|
self.assert_(numpy.alltrue(r == (8 * ones)))
|
||||||
|
|
||||||
# create arrays, use them in OpenCV and replace the the array
|
# create arrays, use them in OpenCV and replace the the array
|
||||||
@ -958,11 +958,12 @@ class AreaTests(OpenCVTests):
|
|||||||
|
|
||||||
#
|
#
|
||||||
m = numpy.identity(4, dtype = numpy.float32)
|
m = numpy.identity(4, dtype = numpy.float32)
|
||||||
|
m = cv.fromarray(m[:3, :3])
|
||||||
rvec = cv.CreateMat(3, 1, cv.CV_32FC1)
|
rvec = cv.CreateMat(3, 1, cv.CV_32FC1)
|
||||||
rvec[0,0] = 1
|
rvec[0,0] = 1
|
||||||
rvec[1,0] = 1
|
rvec[1,0] = 1
|
||||||
rvec[2,0] = 1
|
rvec[2,0] = 1
|
||||||
cv.Rodrigues2(rvec, m[:3,:3])
|
cv.Rodrigues2(rvec, m)
|
||||||
#print m
|
#print m
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user