Commit bd70a033 authored by Roman Donchenko's avatar Roman Donchenko

Boring changes - calib3d.

parent 711fb6bd
...@@ -515,7 +515,7 @@ findCirclesGrid ...@@ -515,7 +515,7 @@ findCirclesGrid
------------------- -------------------
Finds centers in the grid of circles. Finds centers in the grid of circles.
.. ocv:function:: bool findCirclesGrid( InputArray image, Size patternSize, OutputArray centers, int flags=CALIB_CB_SYMMETRIC_GRID, const Ptr<FeatureDetector> &blobDetector = new SimpleBlobDetector() ) .. ocv:function:: bool findCirclesGrid( InputArray image, Size patternSize, OutputArray centers, int flags=CALIB_CB_SYMMETRIC_GRID, const Ptr<FeatureDetector> &blobDetector = makePtr<SimpleBlobDetector>() )
.. ocv:pyfunction:: cv2.findCirclesGrid(image, patternSize[, centers[, flags[, blobDetector]]]) -> retval, centers .. ocv:pyfunction:: cv2.findCirclesGrid(image, patternSize[, centers[, flags[, blobDetector]]]) -> retval, centers
......
...@@ -180,7 +180,7 @@ CV_EXPORTS_W void drawChessboardCorners( InputOutputArray image, Size patternSiz ...@@ -180,7 +180,7 @@ CV_EXPORTS_W void drawChessboardCorners( InputOutputArray image, Size patternSiz
//! finds circles' grid pattern of the specified size in the image //! finds circles' grid pattern of the specified size in the image
CV_EXPORTS_W bool findCirclesGrid( InputArray image, Size patternSize, CV_EXPORTS_W bool findCirclesGrid( InputArray image, Size patternSize,
OutputArray centers, int flags = CALIB_CB_SYMMETRIC_GRID, OutputArray centers, int flags = CALIB_CB_SYMMETRIC_GRID,
const Ptr<FeatureDetector> &blobDetector = new SimpleBlobDetector()); const Ptr<FeatureDetector> &blobDetector = makePtr<SimpleBlobDetector>());
//! finds intrinsic and extrinsic camera parameters from several fews of a known calibration pattern. //! finds intrinsic and extrinsic camera parameters from several fews of a known calibration pattern.
CV_EXPORTS_W double calibrateCamera( InputArrayOfArrays objectPoints, CV_EXPORTS_W double calibrateCamera( InputArrayOfArrays objectPoints,
......
...@@ -271,8 +271,8 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size, ...@@ -271,8 +271,8 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
if( !out_corners ) if( !out_corners )
CV_Error( CV_StsNullPtr, "Null pointer to corners" ); CV_Error( CV_StsNullPtr, "Null pointer to corners" );
storage = cvCreateMemStorage(0); storage.reset(cvCreateMemStorage(0));
thresh_img = cvCreateMat( img->rows, img->cols, CV_8UC1 ); thresh_img.reset(cvCreateMat( img->rows, img->cols, CV_8UC1 ));
#ifdef DEBUG_CHESSBOARD #ifdef DEBUG_CHESSBOARD
dbg_img = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3 ); dbg_img = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3 );
...@@ -284,7 +284,7 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size, ...@@ -284,7 +284,7 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
{ {
// equalize the input image histogram - // equalize the input image histogram -
// that should make the contrast between "black" and "white" areas big enough // that should make the contrast between "black" and "white" areas big enough
norm_img = cvCreateMat( img->rows, img->cols, CV_8UC1 ); norm_img.reset(cvCreateMat( img->rows, img->cols, CV_8UC1 ));
if( CV_MAT_CN(img->type) != 1 ) if( CV_MAT_CN(img->type) != 1 )
{ {
...@@ -541,12 +541,12 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size, ...@@ -541,12 +541,12 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
cv::Ptr<CvMat> gray; cv::Ptr<CvMat> gray;
if( CV_MAT_CN(img->type) != 1 ) if( CV_MAT_CN(img->type) != 1 )
{ {
gray = cvCreateMat(img->rows, img->cols, CV_8UC1); gray.reset(cvCreateMat(img->rows, img->cols, CV_8UC1));
cvCvtColor(img, gray, CV_BGR2GRAY); cvCvtColor(img, gray, CV_BGR2GRAY);
} }
else else
{ {
gray = cvCloneMat(img); gray.reset(cvCloneMat(img));
} }
int wsize = 2; int wsize = 2;
cvFindCornerSubPix( gray, out_corners, pattern_size.width*pattern_size.height, cvFindCornerSubPix( gray, out_corners, pattern_size.width*pattern_size.height,
...@@ -627,7 +627,7 @@ icvOrderFoundConnectedQuads( int quad_count, CvCBQuad **quads, ...@@ -627,7 +627,7 @@ icvOrderFoundConnectedQuads( int quad_count, CvCBQuad **quads,
int *all_count, CvCBQuad **all_quads, CvCBCorner **corners, int *all_count, CvCBQuad **all_quads, CvCBCorner **corners,
CvSize pattern_size, CvMemStorage* storage ) CvSize pattern_size, CvMemStorage* storage )
{ {
cv::Ptr<CvMemStorage> temp_storage = cvCreateChildMemStorage( storage ); cv::Ptr<CvMemStorage> temp_storage(cvCreateChildMemStorage( storage ));
CvSeq* stack = cvCreateSeq( 0, sizeof(*stack), sizeof(void*), temp_storage ); CvSeq* stack = cvCreateSeq( 0, sizeof(*stack), sizeof(void*), temp_storage );
// first find an interior quad // first find an interior quad
...@@ -1109,7 +1109,7 @@ icvCleanFoundConnectedQuads( int quad_count, CvCBQuad **quad_group, CvSize patte ...@@ -1109,7 +1109,7 @@ icvCleanFoundConnectedQuads( int quad_count, CvCBQuad **quad_group, CvSize patte
// create an array of quadrangle centers // create an array of quadrangle centers
cv::AutoBuffer<CvPoint2D32f> centers( quad_count ); cv::AutoBuffer<CvPoint2D32f> centers( quad_count );
cv::Ptr<CvMemStorage> temp_storage = cvCreateMemStorage(0); cv::Ptr<CvMemStorage> temp_storage(cvCreateMemStorage(0));
for( i = 0; i < quad_count; i++ ) for( i = 0; i < quad_count; i++ )
{ {
...@@ -1205,7 +1205,7 @@ static int ...@@ -1205,7 +1205,7 @@ static int
icvFindConnectedQuads( CvCBQuad *quad, int quad_count, CvCBQuad **out_group, icvFindConnectedQuads( CvCBQuad *quad, int quad_count, CvCBQuad **out_group,
int group_idx, CvMemStorage* storage ) int group_idx, CvMemStorage* storage )
{ {
cv::Ptr<CvMemStorage> temp_storage = cvCreateChildMemStorage( storage ); cv::Ptr<CvMemStorage> temp_storage(cvCreateChildMemStorage( storage ));
CvSeq* stack = cvCreateSeq( 0, sizeof(*stack), sizeof(void*), temp_storage ); CvSeq* stack = cvCreateSeq( 0, sizeof(*stack), sizeof(void*), temp_storage );
int i, count = 0; int i, count = 0;
...@@ -1674,7 +1674,7 @@ icvGenerateQuads( CvCBQuad **out_quads, CvCBCorner **out_corners, ...@@ -1674,7 +1674,7 @@ icvGenerateQuads( CvCBQuad **out_quads, CvCBCorner **out_corners,
min_size = 25; //cvRound( image->cols * image->rows * .03 * 0.01 * 0.92 ); min_size = 25; //cvRound( image->cols * image->rows * .03 * 0.01 * 0.92 );
// create temporary storage for contours and the sequence of pointers to found quadrangles // create temporary storage for contours and the sequence of pointers to found quadrangles
temp_storage = cvCreateChildMemStorage( storage ); temp_storage.reset(cvCreateChildMemStorage( storage ));
root = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvSeq*), temp_storage ); root = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvSeq*), temp_storage );
// initialize contour retrieving routine // initialize contour retrieving routine
......
This diff is collapsed.
...@@ -53,7 +53,6 @@ using cv::Ptr; ...@@ -53,7 +53,6 @@ using cv::Ptr;
CvLevMarq::CvLevMarq() CvLevMarq::CvLevMarq()
{ {
mask = prevParam = param = J = err = JtJ = JtJN = JtErr = JtJV = JtJW = Ptr<CvMat>();
lambdaLg10 = 0; state = DONE; lambdaLg10 = 0; state = DONE;
criteria = cvTermCriteria(0,0,0); criteria = cvTermCriteria(0,0,0);
iters = 0; iters = 0;
...@@ -62,7 +61,6 @@ CvLevMarq::CvLevMarq() ...@@ -62,7 +61,6 @@ CvLevMarq::CvLevMarq()
CvLevMarq::CvLevMarq( int nparams, int nerrs, CvTermCriteria criteria0, bool _completeSymmFlag ) CvLevMarq::CvLevMarq( int nparams, int nerrs, CvTermCriteria criteria0, bool _completeSymmFlag )
{ {
mask = prevParam = param = J = err = JtJ = JtJN = JtErr = JtJV = JtJW = Ptr<CvMat>();
init(nparams, nerrs, criteria0, _completeSymmFlag); init(nparams, nerrs, criteria0, _completeSymmFlag);
} }
...@@ -89,19 +87,19 @@ void CvLevMarq::init( int nparams, int nerrs, CvTermCriteria criteria0, bool _co ...@@ -89,19 +87,19 @@ void CvLevMarq::init( int nparams, int nerrs, CvTermCriteria criteria0, bool _co
{ {
if( !param || param->rows != nparams || nerrs != (err ? err->rows : 0) ) if( !param || param->rows != nparams || nerrs != (err ? err->rows : 0) )
clear(); clear();
mask = cvCreateMat( nparams, 1, CV_8U ); mask.reset(cvCreateMat( nparams, 1, CV_8U ));
cvSet(mask, cvScalarAll(1)); cvSet(mask, cvScalarAll(1));
prevParam = cvCreateMat( nparams, 1, CV_64F ); prevParam.reset(cvCreateMat( nparams, 1, CV_64F ));
param = cvCreateMat( nparams, 1, CV_64F ); param.reset(cvCreateMat( nparams, 1, CV_64F ));
JtJ = cvCreateMat( nparams, nparams, CV_64F ); JtJ.reset(cvCreateMat( nparams, nparams, CV_64F ));
JtJN = cvCreateMat( nparams, nparams, CV_64F ); JtJN.reset(cvCreateMat( nparams, nparams, CV_64F ));
JtJV = cvCreateMat( nparams, nparams, CV_64F ); JtJV.reset(cvCreateMat( nparams, nparams, CV_64F ));
JtJW = cvCreateMat( nparams, 1, CV_64F ); JtJW.reset(cvCreateMat( nparams, 1, CV_64F ));
JtErr = cvCreateMat( nparams, 1, CV_64F ); JtErr.reset(cvCreateMat( nparams, 1, CV_64F ));
if( nerrs > 0 ) if( nerrs > 0 )
{ {
J = cvCreateMat( nerrs, nparams, CV_64F ); J.reset(cvCreateMat( nerrs, nparams, CV_64F ));
err = cvCreateMat( nerrs, 1, CV_64F ); err.reset(cvCreateMat( nerrs, 1, CV_64F ));
} }
prevErrNorm = DBL_MAX; prevErrNorm = DBL_MAX;
lambdaLg10 = -3; lambdaLg10 = -3;
...@@ -196,7 +194,7 @@ bool CvLevMarq::updateAlt( const CvMat*& _param, CvMat*& _JtJ, CvMat*& _JtErr, d ...@@ -196,7 +194,7 @@ bool CvLevMarq::updateAlt( const CvMat*& _param, CvMat*& _JtJ, CvMat*& _JtErr, d
{ {
double change; double change;
CV_Assert( err.empty() ); CV_Assert( !err );
if( state == DONE ) if( state == DONE )
{ {
_param = param; _param = param;
......
...@@ -436,9 +436,9 @@ cv::Mat cv::findEssentialMat( InputArray _points1, InputArray _points2, double f ...@@ -436,9 +436,9 @@ cv::Mat cv::findEssentialMat( InputArray _points1, InputArray _points2, double f
Mat E; Mat E;
if( method == RANSAC ) if( method == RANSAC )
createRANSACPointSetRegistrator(new EMEstimatorCallback, 5, threshold, prob)->run(points1, points2, E, _mask); createRANSACPointSetRegistrator(makePtr<EMEstimatorCallback>(), 5, threshold, prob)->run(points1, points2, E, _mask);
else else
createLMeDSPointSetRegistrator(new EMEstimatorCallback, 5, prob)->run(points1, points2, E, _mask); createLMeDSPointSetRegistrator(makePtr<EMEstimatorCallback>(), 5, prob)->run(points1, points2, E, _mask);
return E; return E;
} }
......
...@@ -307,7 +307,7 @@ cv::Mat cv::findHomography( InputArray _points1, InputArray _points2, ...@@ -307,7 +307,7 @@ cv::Mat cv::findHomography( InputArray _points1, InputArray _points2,
if( ransacReprojThreshold <= 0 ) if( ransacReprojThreshold <= 0 )
ransacReprojThreshold = defaultRANSACReprojThreshold; ransacReprojThreshold = defaultRANSACReprojThreshold;
Ptr<PointSetRegistrator::Callback> cb = new HomographyEstimatorCallback; Ptr<PointSetRegistrator::Callback> cb = makePtr<HomographyEstimatorCallback>();
if( method == 0 || npoints == 4 ) if( method == 0 || npoints == 4 )
{ {
...@@ -334,7 +334,7 @@ cv::Mat cv::findHomography( InputArray _points1, InputArray _points2, ...@@ -334,7 +334,7 @@ cv::Mat cv::findHomography( InputArray _points1, InputArray _points2,
if( method == RANSAC || method == LMEDS ) if( method == RANSAC || method == LMEDS )
cb->runKernel( src, dst, H ); cb->runKernel( src, dst, H );
Mat H8(8, 1, CV_64F, H.ptr<double>()); Mat H8(8, 1, CV_64F, H.ptr<double>());
createLMSolver(new HomographyRefineCallback(src, dst), 10)->run(H8); createLMSolver(makePtr<HomographyRefineCallback>(src, dst), 10)->run(H8);
} }
} }
...@@ -686,7 +686,7 @@ cv::Mat cv::findFundamentalMat( InputArray _points1, InputArray _points2, ...@@ -686,7 +686,7 @@ cv::Mat cv::findFundamentalMat( InputArray _points1, InputArray _points2,
if( npoints < 7 ) if( npoints < 7 )
return Mat(); return Mat();
Ptr<PointSetRegistrator::Callback> cb = new FMEstimatorCallback; Ptr<PointSetRegistrator::Callback> cb = makePtr<FMEstimatorCallback>();
int result; int result;
if( npoints == 7 || method == FM_8POINT ) if( npoints == 7 || method == FM_8POINT )
......
...@@ -95,7 +95,7 @@ public: ...@@ -95,7 +95,7 @@ public:
int ptype = param0.type(); int ptype = param0.type();
CV_Assert( (param0.cols == 1 || param0.rows == 1) && (ptype == CV_32F || ptype == CV_64F)); CV_Assert( (param0.cols == 1 || param0.rows == 1) && (ptype == CV_32F || ptype == CV_64F));
CV_Assert( !cb.empty() ); CV_Assert( cb );
int lx = param0.rows + param0.cols - 1; int lx = param0.rows + param0.cols - 1;
param0.convertTo(x, CV_64F); param0.convertTo(x, CV_64F);
...@@ -220,7 +220,7 @@ CV_INIT_ALGORITHM(LMSolverImpl, "LMSolver", ...@@ -220,7 +220,7 @@ CV_INIT_ALGORITHM(LMSolverImpl, "LMSolver",
Ptr<LMSolver> createLMSolver(const Ptr<LMSolver::Callback>& cb, int maxIters) Ptr<LMSolver> createLMSolver(const Ptr<LMSolver::Callback>& cb, int maxIters)
{ {
CV_Assert( !LMSolverImpl_info_auto.name().empty() ); CV_Assert( !LMSolverImpl_info_auto.name().empty() );
return new LMSolverImpl(cb, maxIters); return makePtr<LMSolverImpl>(cb, maxIters);
} }
} }
...@@ -171,7 +171,7 @@ public: ...@@ -171,7 +171,7 @@ public:
RNG rng((uint64)-1); RNG rng((uint64)-1);
CV_Assert( !cb.empty() ); CV_Assert( cb );
CV_Assert( confidence > 0 && confidence < 1 ); CV_Assert( confidence > 0 && confidence < 1 );
CV_Assert( count >= 0 && count2 == count ); CV_Assert( count >= 0 && count2 == count );
...@@ -288,7 +288,7 @@ public: ...@@ -288,7 +288,7 @@ public:
RNG rng((uint64)-1); RNG rng((uint64)-1);
CV_Assert( !cb.empty() ); CV_Assert( cb );
CV_Assert( confidence > 0 && confidence < 1 ); CV_Assert( confidence > 0 && confidence < 1 );
CV_Assert( count >= 0 && count2 == count ); CV_Assert( count >= 0 && count2 == count );
...@@ -397,7 +397,8 @@ Ptr<PointSetRegistrator> createRANSACPointSetRegistrator(const Ptr<PointSetRegis ...@@ -397,7 +397,8 @@ Ptr<PointSetRegistrator> createRANSACPointSetRegistrator(const Ptr<PointSetRegis
double _confidence, int _maxIters) double _confidence, int _maxIters)
{ {
CV_Assert( !RANSACPointSetRegistrator_info_auto.name().empty() ); CV_Assert( !RANSACPointSetRegistrator_info_auto.name().empty() );
return new RANSACPointSetRegistrator(_cb, _modelPoints, _threshold, _confidence, _maxIters); return Ptr<PointSetRegistrator>(
new RANSACPointSetRegistrator(_cb, _modelPoints, _threshold, _confidence, _maxIters));
} }
...@@ -405,7 +406,8 @@ Ptr<PointSetRegistrator> createLMeDSPointSetRegistrator(const Ptr<PointSetRegist ...@@ -405,7 +406,8 @@ Ptr<PointSetRegistrator> createLMeDSPointSetRegistrator(const Ptr<PointSetRegist
int _modelPoints, double _confidence, int _maxIters) int _modelPoints, double _confidence, int _maxIters)
{ {
CV_Assert( !LMeDSPointSetRegistrator_info_auto.name().empty() ); CV_Assert( !LMeDSPointSetRegistrator_info_auto.name().empty() );
return new LMeDSPointSetRegistrator(_cb, _modelPoints, _confidence, _maxIters); return Ptr<PointSetRegistrator>(
new LMeDSPointSetRegistrator(_cb, _modelPoints, _confidence, _maxIters));
} }
class Affine3DEstimatorCallback : public PointSetRegistrator::Callback class Affine3DEstimatorCallback : public PointSetRegistrator::Callback
...@@ -532,5 +534,5 @@ int cv::estimateAffine3D(InputArray _from, InputArray _to, ...@@ -532,5 +534,5 @@ int cv::estimateAffine3D(InputArray _from, InputArray _to,
param1 = param1 <= 0 ? 3 : param1; param1 = param1 <= 0 ? 3 : param1;
param2 = (param2 < epsilon) ? 0.99 : (param2 > 1 - epsilon) ? 0.99 : param2; param2 = (param2 < epsilon) ? 0.99 : (param2 > 1 - epsilon) ? 0.99 : param2;
return createRANSACPointSetRegistrator(new Affine3DEstimatorCallback, 4, param1, param2)->run(dFrom, dTo, _out, _inliers); return createRANSACPointSetRegistrator(makePtr<Affine3DEstimatorCallback>(), 4, param1, param2)->run(dFrom, dTo, _out, _inliers);
} }
...@@ -991,7 +991,7 @@ const char* StereoBMImpl::name_ = "StereoMatcher.BM"; ...@@ -991,7 +991,7 @@ const char* StereoBMImpl::name_ = "StereoMatcher.BM";
cv::Ptr<cv::StereoBM> cv::createStereoBM(int _numDisparities, int _SADWindowSize) cv::Ptr<cv::StereoBM> cv::createStereoBM(int _numDisparities, int _SADWindowSize)
{ {
return new StereoBMImpl(_numDisparities, _SADWindowSize); return makePtr<StereoBMImpl>(_numDisparities, _SADWindowSize);
} }
/* End of file. */ /* End of file. */
...@@ -947,11 +947,12 @@ Ptr<StereoSGBM> createStereoSGBM(int minDisparity, int numDisparities, int SADWi ...@@ -947,11 +947,12 @@ Ptr<StereoSGBM> createStereoSGBM(int minDisparity, int numDisparities, int SADWi
int speckleWindowSize, int speckleRange, int speckleWindowSize, int speckleRange,
int mode) int mode)
{ {
return new StereoSGBMImpl(minDisparity, numDisparities, SADWindowSize, return Ptr<StereoSGBM>(
P1, P2, disp12MaxDiff, new StereoSGBMImpl(minDisparity, numDisparities, SADWindowSize,
preFilterCap, uniquenessRatio, P1, P2, disp12MaxDiff,
speckleWindowSize, speckleRange, preFilterCap, uniquenessRatio,
mode); speckleWindowSize, speckleRange,
mode));
} }
Rect getValidDisparityROI( Rect roi1, Rect roi2, Rect getValidDisparityROI( Rect roi1, Rect roi2,
......
...@@ -240,32 +240,32 @@ cvCorrectMatches(CvMat *F_, CvMat *points1_, CvMat *points2_, CvMat *new_points1 ...@@ -240,32 +240,32 @@ cvCorrectMatches(CvMat *F_, CvMat *points1_, CvMat *points2_, CvMat *new_points1
} }
// Make sure F uses double precision // Make sure F uses double precision
F = cvCreateMat(3,3,CV_64FC1); F.reset(cvCreateMat(3,3,CV_64FC1));
cvConvert(F_, F); cvConvert(F_, F);
// Make sure points1 uses double precision // Make sure points1 uses double precision
points1 = cvCreateMat(points1_->rows,points1_->cols,CV_64FC2); points1.reset(cvCreateMat(points1_->rows,points1_->cols,CV_64FC2));
cvConvert(points1_, points1); cvConvert(points1_, points1);
// Make sure points2 uses double precision // Make sure points2 uses double precision
points2 = cvCreateMat(points2_->rows,points2_->cols,CV_64FC2); points2.reset(cvCreateMat(points2_->rows,points2_->cols,CV_64FC2));
cvConvert(points2_, points2); cvConvert(points2_, points2);
tmp33 = cvCreateMat(3,3,CV_64FC1); tmp33.reset(cvCreateMat(3,3,CV_64FC1));
tmp31 = cvCreateMat(3,1,CV_64FC1), tmp31_2 = cvCreateMat(3,1,CV_64FC1); tmp31.reset(cvCreateMat(3,1,CV_64FC1)), tmp31_2.reset(cvCreateMat(3,1,CV_64FC1));
T1i = cvCreateMat(3,3,CV_64FC1), T2i = cvCreateMat(3,3,CV_64FC1); T1i.reset(cvCreateMat(3,3,CV_64FC1)), T2i.reset(cvCreateMat(3,3,CV_64FC1));
R1 = cvCreateMat(3,3,CV_64FC1), R2 = cvCreateMat(3,3,CV_64FC1); R1.reset(cvCreateMat(3,3,CV_64FC1)), R2.reset(cvCreateMat(3,3,CV_64FC1));
TFT = cvCreateMat(3,3,CV_64FC1), TFTt = cvCreateMat(3,3,CV_64FC1), RTFTR = cvCreateMat(3,3,CV_64FC1); TFT.reset(cvCreateMat(3,3,CV_64FC1)), TFTt.reset(cvCreateMat(3,3,CV_64FC1)), RTFTR.reset(cvCreateMat(3,3,CV_64FC1));
U = cvCreateMat(3,3,CV_64FC1); U.reset(cvCreateMat(3,3,CV_64FC1));
S = cvCreateMat(3,3,CV_64FC1); S.reset(cvCreateMat(3,3,CV_64FC1));
V = cvCreateMat(3,3,CV_64FC1); V.reset(cvCreateMat(3,3,CV_64FC1));
e1 = cvCreateMat(3,1,CV_64FC1), e2 = cvCreateMat(3,1,CV_64FC1); e1.reset(cvCreateMat(3,1,CV_64FC1)), e2.reset(cvCreateMat(3,1,CV_64FC1));
double x1, y1, x2, y2; double x1, y1, x2, y2;
double scale; double scale;
double f1, f2, a, b, c, d; double f1, f2, a, b, c, d;
polynomial = cvCreateMat(1,7,CV_64FC1); polynomial.reset(cvCreateMat(1,7,CV_64FC1));
result = cvCreateMat(1,6,CV_64FC2); result.reset(cvCreateMat(1,6,CV_64FC2));
double t_min, s_val, t, s; double t_min, s_val, t, s;
for (int p = 0; p < points1->cols; ++p) { for (int p = 0; p < points1->cols; ++p) {
// Replace F by T2-t * F * T1-t // Replace F by T2-t * F * T1-t
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment