static PyObject *Py_MinOrMaxFilter(PyObject *obj, PyObject *args) { PyArrayObject *input = NULL, *output = NULL, *footprint = NULL; PyArrayObject *structure = NULL; npy_intp *origin = NULL; int mode, minimum; double cval; if (!PyArg_ParseTuple(args, "O&O&O&O&idO&i", NI_ObjectToInputArray, &input, NI_ObjectToInputArray, &footprint, NI_ObjectToOptionalInputArray, &structure, NI_ObjectToOutputArray, &output, &mode, &cval, NI_ObjectToLongSequence, &origin, &minimum)) goto exit; if (!NI_MinOrMaxFilter(input, footprint, structure, output, (NI_ExtendMode)mode, cval, origin, minimum)) goto exit; exit: Py_XDECREF(input); Py_XDECREF(footprint); Py_XDECREF(structure); Py_XDECREF(output); if (origin) free(origin); return PyErr_Occurred() ? NULL : Py_BuildValue(""); }
static PyObject *Py_MinOrMaxFilter(PyObject *obj, PyObject *args) { PyArrayObject *input = NULL, *output = NULL, *footprint = NULL; PyArrayObject *structure = NULL; PyArray_Dims origin; int mode, minimum; double cval; if (!PyArg_ParseTuple(args, "O&O&O&O&idO&i", NI_ObjectToInputArray, &input, NI_ObjectToInputArray, &footprint, NI_ObjectToOptionalInputArray, &structure, NI_ObjectToOutputArray, &output, &mode, &cval, PyArray_IntpConverter, &origin, &minimum)) { goto exit; } if (!_validate_origin(input, origin)) { goto exit; } NI_MinOrMaxFilter(input, footprint, structure, output, (NI_ExtendMode)mode, cval, origin.ptr, minimum); #ifdef HAVE_WRITEBACKIFCOPY PyArray_ResolveWritebackIfCopy(output); #endif exit: Py_XDECREF(input); Py_XDECREF(footprint); Py_XDECREF(structure); Py_XDECREF(output); PyDimMem_FREE(origin.ptr); return PyErr_Occurred() ? NULL : Py_BuildValue(""); }