Initial DLS add

This commit is contained in:
edgarriba 2014-07-15 09:58:49 +02:00
parent 9abcd88435
commit fb67ab1257
4 changed files with 48 additions and 2 deletions

View File

@ -57,8 +57,9 @@ enum { LMEDS = 4, //!< least-median algorithm
enum { ITERATIVE = 0,
EPNP = 1, // F.Moreno-Noguer, V.Lepetit and P.Fua "EPnP: Efficient Perspective-n-Point Camera Pose Estimation"
P3P = 2 // X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang; "Complete Solution Classification for the Perspective-Three-Point Problem"
};
P3P = 2, // X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang; "Complete Solution Classification for the Perspective-Three-Point Problem"
DLS = 3 // Joel A. Hesch and Stergios I. Roumeliotis. "A Direct Least-Squares (DLS) Method for PnP"
};
enum { CALIB_CB_ADAPTIVE_THRESH = 1,
CALIB_CB_NORMALIZE_IMAGE = 2,

View File

@ -0,0 +1,14 @@
#include <iostream>
#include "dls.h"
dls::dls()
{
// TODO Auto-generated constructor stub
}
dls::~dls()
{
// TODO Auto-generated destructor stub
}

17
modules/calib3d/src/dls.h Normal file
View File

@ -0,0 +1,17 @@
#ifndef dls_h
#define dls_h
#include "opencv2/core/core_c.h"
class dls
{
public:
dls();
~dls();
private:
};
#endif

View File

@ -44,6 +44,7 @@
#include "epnp.h"
#include "p3p.h"
#include "opencv2/calib3d/calib3d_c.h"
#include "dls.h"
#include <iostream>
using namespace cv;
@ -92,6 +93,19 @@ bool cv::solvePnP( InputArray _opoints, InputArray _ipoints,
c_distCoeffs.rows*c_distCoeffs.cols ? &c_distCoeffs : 0,
&c_rvec, &c_tvec, useExtrinsicGuess );
return true;
}
else if (flags == DLS)
{
std::cout << "DLS" << std::endl;
cv::Mat undistortedPoints;
cv::undistortPoints(ipoints, undistortedPoints, cameraMatrix, distCoeffs);
//dls PnP;
// DO SOMETHING
cv::Mat R, rvec = _rvec.getMat(), tvec = _tvec.getMat();
}
else
CV_Error(CV_StsBadArg, "The flags argument must be one of CV_ITERATIVE, CV_P3P or CV_EPNP");