mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
Merge pull request #9839 from terfendail:features/python_wrapper/surface_matching_cleanup
This commit is contained in:
commit
58a83e99c0
@ -396,6 +396,24 @@ bool pyopencv_to(PyObject* o, Mat& m, const char* name)
|
|||||||
return pyopencv_to(o, m, ArgInfo(name, 0));
|
return pyopencv_to(o, m, ArgInfo(name, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename _Tp, int m, int n>
|
||||||
|
bool pyopencv_to(PyObject* o, Matx<_Tp, m, n>& mx, const ArgInfo info)
|
||||||
|
{
|
||||||
|
Mat tmp;
|
||||||
|
if (!pyopencv_to(o, tmp, info)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp.copyTo(mx);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _Tp, int m, int n>
|
||||||
|
bool pyopencv_to(PyObject* o, Matx<_Tp, m, n>& mx, const char* name)
|
||||||
|
{
|
||||||
|
return pyopencv_to(o, mx, ArgInfo(name, 0));
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
bool pyopencv_to(PyObject *o, Ptr<T>& p, const char *name)
|
bool pyopencv_to(PyObject *o, Ptr<T>& p, const char *name)
|
||||||
{
|
{
|
||||||
@ -683,18 +701,17 @@ PyObject* pyopencv_from(const UMat& m) {
|
|||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
static bool pyopencv_to(PyObject *o, Scalar& s, const ArgInfo info)
|
||||||
bool pyopencv_to(PyObject *o, Scalar& s, const char *name)
|
|
||||||
{
|
{
|
||||||
if(!o || o == Py_None)
|
if(!o || o == Py_None)
|
||||||
return true;
|
return true;
|
||||||
if (PySequence_Check(o)) {
|
if (PySequence_Check(o)) {
|
||||||
PyObject *fi = PySequence_Fast(o, name);
|
PyObject *fi = PySequence_Fast(o, info.name);
|
||||||
if (fi == NULL)
|
if (fi == NULL)
|
||||||
return false;
|
return false;
|
||||||
if (4 < PySequence_Fast_GET_SIZE(fi))
|
if (4 < PySequence_Fast_GET_SIZE(fi))
|
||||||
{
|
{
|
||||||
failmsg("Scalar value for argument '%s' is longer than 4", name);
|
failmsg("Scalar value for argument '%s' is longer than 4", info.name);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (Py_ssize_t i = 0; i < PySequence_Fast_GET_SIZE(fi); i++) {
|
for (Py_ssize_t i = 0; i < PySequence_Fast_GET_SIZE(fi); i++) {
|
||||||
@ -702,7 +719,7 @@ bool pyopencv_to(PyObject *o, Scalar& s, const char *name)
|
|||||||
if (PyFloat_Check(item) || PyInt_Check(item)) {
|
if (PyFloat_Check(item) || PyInt_Check(item)) {
|
||||||
s[(int)i] = PyFloat_AsDouble(item);
|
s[(int)i] = PyFloat_AsDouble(item);
|
||||||
} else {
|
} else {
|
||||||
failmsg("Scalar value for argument '%s' is not numeric", name);
|
failmsg("Scalar value for argument '%s' is not numeric", info.name);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -711,13 +728,19 @@ bool pyopencv_to(PyObject *o, Scalar& s, const char *name)
|
|||||||
if (PyFloat_Check(o) || PyInt_Check(o)) {
|
if (PyFloat_Check(o) || PyInt_Check(o)) {
|
||||||
s[0] = PyFloat_AsDouble(o);
|
s[0] = PyFloat_AsDouble(o);
|
||||||
} else {
|
} else {
|
||||||
failmsg("Scalar value for argument '%s' is not numeric", name);
|
failmsg("Scalar value for argument '%s' is not numeric", info.name);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
bool pyopencv_to(PyObject *o, Scalar& s, const char *name)
|
||||||
|
{
|
||||||
|
return pyopencv_to(o, s, ArgInfo(name, 0));
|
||||||
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
PyObject* pyopencv_from(const Scalar& src)
|
PyObject* pyopencv_from(const Scalar& src)
|
||||||
{
|
{
|
||||||
@ -1024,13 +1047,139 @@ PyObject* pyopencv_from(const Point3f& p)
|
|||||||
return Py_BuildValue("(ddd)", p.x, p.y, p.z);
|
return Py_BuildValue("(ddd)", p.x, p.y, p.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool pyopencv_to(PyObject* obj, Vec4d& v, ArgInfo info)
|
||||||
|
{
|
||||||
|
(void)info;
|
||||||
|
if (!obj)
|
||||||
|
return true;
|
||||||
|
return PyArg_ParseTuple(obj, "dddd", &v[0], &v[1], &v[2], &v[3]) > 0;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
bool pyopencv_to(PyObject* obj, Vec4d& v, const char* name)
|
||||||
|
{
|
||||||
|
return pyopencv_to(obj, v, ArgInfo(name, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool pyopencv_to(PyObject* obj, Vec4f& v, ArgInfo info)
|
||||||
|
{
|
||||||
|
(void)info;
|
||||||
|
if (!obj)
|
||||||
|
return true;
|
||||||
|
return PyArg_ParseTuple(obj, "ffff", &v[0], &v[1], &v[2], &v[3]) > 0;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
bool pyopencv_to(PyObject* obj, Vec4f& v, const char* name)
|
||||||
|
{
|
||||||
|
return pyopencv_to(obj, v, ArgInfo(name, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool pyopencv_to(PyObject* obj, Vec4i& v, ArgInfo info)
|
||||||
|
{
|
||||||
|
(void)info;
|
||||||
|
if (!obj)
|
||||||
|
return true;
|
||||||
|
return PyArg_ParseTuple(obj, "iiii", &v[0], &v[1], &v[2], &v[3]) > 0;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
bool pyopencv_to(PyObject* obj, Vec4i& v, const char* name)
|
||||||
|
{
|
||||||
|
return pyopencv_to(obj, v, ArgInfo(name, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool pyopencv_to(PyObject* obj, Vec3d& v, ArgInfo info)
|
||||||
|
{
|
||||||
|
(void)info;
|
||||||
|
if (!obj)
|
||||||
|
return true;
|
||||||
|
return PyArg_ParseTuple(obj, "ddd", &v[0], &v[1], &v[2]) > 0;
|
||||||
|
}
|
||||||
template<>
|
template<>
|
||||||
bool pyopencv_to(PyObject* obj, Vec3d& v, const char* name)
|
bool pyopencv_to(PyObject* obj, Vec3d& v, const char* name)
|
||||||
{
|
{
|
||||||
(void)name;
|
return pyopencv_to(obj, v, ArgInfo(name, 0));
|
||||||
if(!obj)
|
}
|
||||||
|
|
||||||
|
static bool pyopencv_to(PyObject* obj, Vec3f& v, ArgInfo info)
|
||||||
|
{
|
||||||
|
(void)info;
|
||||||
|
if (!obj)
|
||||||
return true;
|
return true;
|
||||||
return PyArg_ParseTuple(obj, "ddd", &v[0], &v[1], &v[2]) > 0;
|
return PyArg_ParseTuple(obj, "fff", &v[0], &v[1], &v[2]) > 0;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
bool pyopencv_to(PyObject* obj, Vec3f& v, const char* name)
|
||||||
|
{
|
||||||
|
return pyopencv_to(obj, v, ArgInfo(name, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool pyopencv_to(PyObject* obj, Vec3i& v, ArgInfo info)
|
||||||
|
{
|
||||||
|
(void)info;
|
||||||
|
if (!obj)
|
||||||
|
return true;
|
||||||
|
return PyArg_ParseTuple(obj, "iii", &v[0], &v[1], &v[2]) > 0;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
bool pyopencv_to(PyObject* obj, Vec3i& v, const char* name)
|
||||||
|
{
|
||||||
|
return pyopencv_to(obj, v, ArgInfo(name, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool pyopencv_to(PyObject* obj, Vec2d& v, ArgInfo info)
|
||||||
|
{
|
||||||
|
(void)info;
|
||||||
|
if (!obj)
|
||||||
|
return true;
|
||||||
|
return PyArg_ParseTuple(obj, "dd", &v[0], &v[1]) > 0;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
bool pyopencv_to(PyObject* obj, Vec2d& v, const char* name)
|
||||||
|
{
|
||||||
|
return pyopencv_to(obj, v, ArgInfo(name, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool pyopencv_to(PyObject* obj, Vec2f& v, ArgInfo info)
|
||||||
|
{
|
||||||
|
(void)info;
|
||||||
|
if (!obj)
|
||||||
|
return true;
|
||||||
|
return PyArg_ParseTuple(obj, "ff", &v[0], &v[1]) > 0;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
bool pyopencv_to(PyObject* obj, Vec2f& v, const char* name)
|
||||||
|
{
|
||||||
|
return pyopencv_to(obj, v, ArgInfo(name, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool pyopencv_to(PyObject* obj, Vec2i& v, ArgInfo info)
|
||||||
|
{
|
||||||
|
(void)info;
|
||||||
|
if (!obj)
|
||||||
|
return true;
|
||||||
|
return PyArg_ParseTuple(obj, "ii", &v[0], &v[1]) > 0;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
bool pyopencv_to(PyObject* obj, Vec2i& v, const char* name)
|
||||||
|
{
|
||||||
|
return pyopencv_to(obj, v, ArgInfo(name, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
PyObject* pyopencv_from(const Vec4d& v)
|
||||||
|
{
|
||||||
|
return Py_BuildValue("(dddd)", v[0], v[1], v[2], v[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
PyObject* pyopencv_from(const Vec4f& v)
|
||||||
|
{
|
||||||
|
return Py_BuildValue("(ffff)", v[0], v[1], v[2], v[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
PyObject* pyopencv_from(const Vec4i& v)
|
||||||
|
{
|
||||||
|
return Py_BuildValue("(iiii)", v[0], v[1], v[2], v[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
@ -1039,12 +1188,36 @@ PyObject* pyopencv_from(const Vec3d& v)
|
|||||||
return Py_BuildValue("(ddd)", v[0], v[1], v[2]);
|
return Py_BuildValue("(ddd)", v[0], v[1], v[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
PyObject* pyopencv_from(const Vec3f& v)
|
||||||
|
{
|
||||||
|
return Py_BuildValue("(fff)", v[0], v[1], v[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
PyObject* pyopencv_from(const Vec3i& v)
|
||||||
|
{
|
||||||
|
return Py_BuildValue("(iii)", v[0], v[1], v[2]);
|
||||||
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
PyObject* pyopencv_from(const Vec2d& v)
|
PyObject* pyopencv_from(const Vec2d& v)
|
||||||
{
|
{
|
||||||
return Py_BuildValue("(dd)", v[0], v[1]);
|
return Py_BuildValue("(dd)", v[0], v[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
PyObject* pyopencv_from(const Vec2f& v)
|
||||||
|
{
|
||||||
|
return Py_BuildValue("(ff)", v[0], v[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
PyObject* pyopencv_from(const Vec2i& v)
|
||||||
|
{
|
||||||
|
return Py_BuildValue("(ii)", v[0], v[1]);
|
||||||
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
PyObject* pyopencv_from(const Point2d& p)
|
PyObject* pyopencv_from(const Point2d& p)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user