diff --git a/modules/calib3d/include/opencv2/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d.hpp index f5ccb54a71b4348777cc8c7a78a25ab51934bd04..1a8777b93c9394e5bfac36dbf19408b3b5e7e90f 100644 --- a/modules/calib3d/include/opencv2/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d.hpp @@ -262,16 +262,16 @@ CV_EXPORTS Mat findFundamentalMat( InputArray points1, InputArray points2, double param1 = 3., double param2 = 0.99 ); //! finds essential matrix from a set of corresponding 2D points using five-point algorithm -CV_EXPORTS Mat findEssentialMat( InputArray points1, InputArray points2, +CV_EXPORTS_W Mat findEssentialMat( InputArray points1, InputArray points2, double focal = 1.0, Point2d pp = Point2d(0, 0), int method = RANSAC, double prob = 0.999, double threshold = 1.0, OutputArray mask = noArray() ); //! decompose essential matrix to possible rotation matrix and one translation vector -CV_EXPORTS void decomposeEssentialMat( InputArray E, OutputArray R1, OutputArray R2, OutputArray t ); +CV_EXPORTS_W void decomposeEssentialMat( InputArray E, OutputArray R1, OutputArray R2, OutputArray t ); //! recover relative camera pose from a set of corresponding 2D points -CV_EXPORTS int recoverPose( InputArray E, InputArray points1, InputArray points2, +CV_EXPORTS_W int recoverPose( InputArray E, InputArray points1, InputArray points2, OutputArray R, OutputArray t, double focal = 1.0, Point2d pp = Point2d(0, 0), InputOutputArray mask = noArray() ); diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp index 6b50abcc53b1deb43d409f2c52331448b2802b2e..b2bd368a1861f175795e3a152c38d5e8504d5eb7 100644 --- a/modules/python/src2/cv2.cpp +++ b/modules/python/src2/cv2.cpp @@ -688,6 +688,23 @@ bool pyopencv_to(PyObject* obj, Point2f& p, const char* name) return PyArg_ParseTuple(obj, "ff", &p.x, &p.y) > 0; } +template<> +bool pyopencv_to(PyObject* obj, Point2d& p, const char* name) +{ + (void)name; + if(!obj || obj == Py_None) + return true; + if(!!PyComplex_CheckExact(obj)) + { + Py_complex c = PyComplex_AsCComplex(obj); + p.x = saturate_cast(c.real); + p.y = saturate_cast(c.imag); + return true; + } + return PyArg_ParseTuple(obj, "dd", &p.x, &p.y) > 0; +} + + template<> PyObject* pyopencv_from(const Point& p) {