From 2dea07f9f8128f782ef6f30da67579efba222be5 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Thu, 14 Jul 2011 14:13:10 +0000 Subject: [PATCH] repaired Python bindings for functions using InputOutputArray --- .../include/opencv2/calib3d/calib3d.hpp | 12 +-- modules/core/include/opencv2/core/core.hpp | 2 +- .../include/opencv2/imgproc/imgproc.hpp | 8 +- modules/imgproc/src/accum.cpp | 2 +- modules/python/src2/gen2.py | 4 +- modules/python/src2/opencv_extra_api.hpp | 76 ------------------- .../video/include/opencv2/video/tracking.hpp | 4 +- 7 files changed, 17 insertions(+), 91 deletions(-) diff --git a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp index 2234bbc5d1..4491849c3a 100644 --- a/modules/calib3d/include/opencv2/calib3d/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d/calib3d.hpp @@ -561,8 +561,8 @@ enum CV_EXPORTS_W double calibrateCamera( InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, Size imageSize, - CV_IN_OUT InputOutputArray cameraMatrix, - CV_IN_OUT InputOutputArray distCoeffs, + CV_OUT InputOutputArray cameraMatrix, + CV_OUT InputOutputArray distCoeffs, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags=0 ); @@ -581,10 +581,10 @@ CV_EXPORTS_W void calibrationMatrixValues( InputArray cameraMatrix, CV_EXPORTS_W double stereoCalibrate( InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, - CV_IN_OUT InputOutputArray cameraMatrix1, - CV_IN_OUT InputOutputArray distCoeffs1, - CV_IN_OUT InputOutputArray cameraMatrix2, - CV_IN_OUT InputOutputArray distCoeffs2, + CV_OUT InputOutputArray cameraMatrix1, + CV_OUT InputOutputArray distCoeffs1, + CV_OUT InputOutputArray cameraMatrix2, + CV_OUT InputOutputArray distCoeffs2, Size imageSize, OutputArray R, OutputArray T, OutputArray E, OutputArray F, TermCriteria criteria = TermCriteria(TermCriteria::COUNT+ diff --git a/modules/core/include/opencv2/core/core.hpp b/modules/core/include/opencv2/core/core.hpp index 4fa02aaf59..492f8f489c 100644 --- a/modules/core/include/opencv2/core/core.hpp +++ b/modules/core/include/opencv2/core/core.hpp @@ -2392,7 +2392,7 @@ CV_EXPORTS void polylines(Mat& img, const Point** pts, const int* npts, CV_EXPORTS bool clipLine(Size imgSize, CV_IN_OUT Point& pt1, CV_IN_OUT Point& pt2); //! clips the line segment by the rectangle imgRect -CV_EXPORTS_W bool clipLine(Rect imgRect, CV_IN_OUT Point& pt1, CV_IN_OUT Point& pt2); +CV_EXPORTS_W bool clipLine(Rect imgRect, CV_OUT CV_IN_OUT Point& pt1, CV_OUT CV_IN_OUT Point& pt2); /*! Line iterator class diff --git a/modules/imgproc/include/opencv2/imgproc/imgproc.hpp b/modules/imgproc/include/opencv2/imgproc/imgproc.hpp index a843889558..add24fde5e 100644 --- a/modules/imgproc/include/opencv2/imgproc/imgproc.hpp +++ b/modules/imgproc/include/opencv2/imgproc/imgproc.hpp @@ -574,16 +574,16 @@ CV_EXPORTS_AS(integral3) void integral( InputArray src, OutputArray sum, int sdepth=-1 ); //! adds image to the accumulator (dst += src). Unlike cv::add, dst and src can have different types. -CV_EXPORTS_W void accumulate( InputArray src, CV_IN_OUT InputOutputArray dst, +CV_EXPORTS_W void accumulate( InputArray src, CV_OUT InputOutputArray dst, InputArray mask=noArray() ); //! adds squared src image to the accumulator (dst += src*src). -CV_EXPORTS_W void accumulateSquare( InputArray src, CV_IN_OUT InputOutputArray dst, +CV_EXPORTS_W void accumulateSquare( InputArray src, CV_OUT InputOutputArray dst, InputArray mask=noArray() ); //! adds product of the 2 images to the accumulator (dst += src1*src2). CV_EXPORTS_W void accumulateProduct( InputArray src1, InputArray src2, - CV_IN_OUT InputOutputArray dst, InputArray mask=noArray() ); + CV_OUT InputOutputArray dst, InputArray mask=noArray() ); //! updates the running average (dst = dst*(1-alpha) + src*alpha) -CV_EXPORTS_W void accumulateWeighted( InputArray src, CV_IN_OUT InputOutputArray dst, +CV_EXPORTS_W void accumulateWeighted( InputArray src, CV_OUT InputOutputArray dst, double alpha, InputArray mask=noArray() ); //! type of the threshold operation diff --git a/modules/imgproc/src/accum.cpp b/modules/imgproc/src/accum.cpp index a099fcbae0..4a588f8fcf 100644 --- a/modules/imgproc/src/accum.cpp +++ b/modules/imgproc/src/accum.cpp @@ -417,7 +417,7 @@ void cv::accumulateProduct( InputArray _src1, InputArray _src2, } -void cv::accumulateWeighted( InputArray _src, CV_IN_OUT InputOutputArray _dst, +void cv::accumulateWeighted( InputArray _src, InputOutputArray _dst, double alpha, InputArray _mask ) { Mat src = _src.getMat(), dst = _dst.getMat(), mask = _mask.getMat(); diff --git a/modules/python/src2/gen2.py b/modules/python/src2/gen2.py index 5ed320832e..f50af2636d 100644 --- a/modules/python/src2/gen2.py +++ b/modules/python/src2/gen2.py @@ -278,10 +278,12 @@ class ArgInfo(object): self.arraycvt = None self.inputarg = True self.outputarg = False + self.returnarg = False for m in arg_tuple[3]: if m == "/O": self.inputarg = False self.outputarg = True + self.returnarg = True elif m == "/IO": self.inputarg = True self.outputarg = True @@ -353,7 +355,7 @@ class FuncVariant(object): argno += 1 if a.name in self.array_counters: continue - if a.outputarg: + if a.returnarg: outlist.append((a.name, argno)) if not a.inputarg: if a.isbig(): diff --git a/modules/python/src2/opencv_extra_api.hpp b/modules/python/src2/opencv_extra_api.hpp index eee9e5a75f..40af561f09 100644 --- a/modules/python/src2/opencv_extra_api.hpp +++ b/modules/python/src2/opencv_extra_api.hpp @@ -213,82 +213,6 @@ CV_WRAP static inline void findCirclesGridDefault( InputArray image, Size patter { findCirclesGrid(image, patternSize, centers, flags); } - - -/* -//! initializes camera matrix from a few 3D points and the corresponding projections. -CV_WRAP static inline Mat initCameraMatrix2D( const vector& objectPoints, - const vector& imagePoints, - Size imageSize, double aspectRatio=1. ) -{ - vector > _objectPoints; - vector > _imagePoints; - mv2vv(objectPoints, _objectPoints); - mv2vv(imagePoints, _imagePoints); - return initCameraMatrix2D(_objectPoints, _imagePoints, imageSize, aspectRatio); -} - - -CV_WRAP static inline double calibrateCamera( const vector& objectPoints, - const vector& imagePoints, - Size imageSize, - CV_IN_OUT Mat& cameraMatrix, - CV_IN_OUT Mat& distCoeffs, - vector& rvecs, vector& tvecs, - int flags=0 ) -{ - vector > _objectPoints; - vector > _imagePoints; - mv2vv(objectPoints, _objectPoints); - mv2vv(imagePoints, _imagePoints); - return calibrateCamera(_objectPoints, _imagePoints, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, flags); -} - - -CV_WRAP static inline double stereoCalibrate( const vector& objectPoints, - const vector& imagePoints1, - const vector& imagePoints2, - CV_IN_OUT Mat& cameraMatrix1, CV_IN_OUT Mat& distCoeffs1, - CV_IN_OUT Mat& cameraMatrix2, CV_IN_OUT Mat& distCoeffs2, - Size imageSize, CV_OUT Mat& R, CV_OUT Mat& T, - CV_OUT Mat& E, CV_OUT Mat& F, - TermCriteria criteria = TermCriteria(TermCriteria::COUNT+ - TermCriteria::EPS, 30, 1e-6), - int flags=CALIB_FIX_INTRINSIC ) -{ - vector > _objectPoints; - vector > _imagePoints1; - vector > _imagePoints2; - mv2vv(objectPoints, _objectPoints); - mv2vv(imagePoints1, _imagePoints1); - mv2vv(imagePoints2, _imagePoints2); - return stereoCalibrate(_objectPoints, _imagePoints1, _imagePoints2, cameraMatrix1, distCoeffs1, - cameraMatrix2, distCoeffs2, imageSize, R, T, E, F, criteria, flags); -} - -CV_WRAP static inline float rectify3Collinear( const Mat& cameraMatrix1, const Mat& distCoeffs1, - const Mat& cameraMatrix2, const Mat& distCoeffs2, - const Mat& cameraMatrix3, const Mat& distCoeffs3, - const vector& imgpt1, const vector& imgpt3, - Size imageSize, const Mat& R12, const Mat& T12, - const Mat& R13, const Mat& T13, - CV_OUT Mat& R1, CV_OUT Mat& R2, CV_OUT Mat& R3, - CV_OUT Mat& P1, CV_OUT Mat& P2, CV_OUT Mat& P3, CV_OUT Mat& Q, - double alpha, Size newImgSize, - CV_OUT Rect* roi1, CV_OUT Rect* roi2, int flags ) -{ - vector > _imagePoints1; - vector > _imagePoints3; - mv2vv(imgpt1, _imagePoints1); - mv2vv(imgpt3, _imagePoints3); - return rectify3Collinear(cameraMatrix1, distCoeffs1, - cameraMatrix2, distCoeffs2, - cameraMatrix3, distCoeffs3, - _imagePoints1, _imagePoints3, imageSize, - R12, T12, R13, T13, R1, R2, R3, P1, P2, P3, - Q, alpha, newImgSize, roi1, roi2, flags); -} -*/ } diff --git a/modules/video/include/opencv2/video/tracking.hpp b/modules/video/include/opencv2/video/tracking.hpp index 6a4b1d5b79..54e249b294 100644 --- a/modules/video/include/opencv2/video/tracking.hpp +++ b/modules/video/include/opencv2/video/tracking.hpp @@ -263,11 +263,11 @@ CV_EXPORTS_W void segmentMotion(InputArray mhi, OutputArray segmask, double timestamp, double segThresh); //! updates the object tracking window using CAMSHIFT algorithm -CV_EXPORTS_W RotatedRect CamShift( InputArray probImage, CV_IN_OUT Rect& window, +CV_EXPORTS_W RotatedRect CamShift( InputArray probImage, CV_OUT CV_IN_OUT Rect& window, TermCriteria criteria ); //! updates the object tracking window using meanshift algorithm -CV_EXPORTS_W int meanShift( InputArray probImage, CV_IN_OUT Rect& window, +CV_EXPORTS_W int meanShift( InputArray probImage, CV_OUT CV_IN_OUT Rect& window, TermCriteria criteria ); /*! -- GitLab