solvePnP: use CV_32F for rvec, tvec if all PnP inputs are CV_32F

pull/8065/head
Pavel Rojtberg 8 years ago
parent 205ccddff8
commit 3e708e015c
  1. 10
      modules/calib3d/src/solvepnp.cpp

@ -77,8 +77,14 @@ bool solvePnP( InputArray _opoints, InputArray _ipoints,
}
else
{
_rvec.create(3, 1, CV_64F);
_tvec.create(3, 1, CV_64F);
int mtype = CV_64F;
// use CV_32F if all PnP inputs are CV_32F and outputs are empty
if (_ipoints.depth() == _cameraMatrix.depth() && _ipoints.depth() == _opoints.depth() &&
_rvec.empty() && _tvec.empty())
mtype = _opoints.depth();
_rvec.create(3, 1, mtype);
_tvec.create(3, 1, mtype);
}
rvec = _rvec.getMat();
tvec = _tvec.getMat();

Loading…
Cancel
Save