fixed bugs #1718, #2375; attached the new tests to test.py.

This commit is contained in:
Vadim Pisarevsky 2013-01-31 15:34:09 +04:00
parent fe30da6e2c
commit abd9675a99
3 changed files with 13 additions and 9 deletions

View File

@ -3360,7 +3360,11 @@ void cv::projectPoints( InputArray _opoints,
CvMat c_cameraMatrix = cameraMatrix; CvMat c_cameraMatrix = cameraMatrix;
CvMat c_rvec = rvec, c_tvec = tvec; CvMat c_rvec = rvec, c_tvec = tvec;
double dc0buf[5]={0};
Mat dc0(5,1,CV_64F,dc0buf);
Mat distCoeffs = _distCoeffs.getMat(); Mat distCoeffs = _distCoeffs.getMat();
if( distCoeffs.empty() )
distCoeffs = dc0;
CvMat c_distCoeffs = distCoeffs; CvMat c_distCoeffs = distCoeffs;
int ndistCoeffs = distCoeffs.rows + distCoeffs.cols - 1; int ndistCoeffs = distCoeffs.rows + distCoeffs.cols - 1;
@ -3375,8 +3379,7 @@ void cv::projectPoints( InputArray _opoints,
pdpddist = &(dpddist = jacobian.colRange(10, 10+ndistCoeffs)); pdpddist = &(dpddist = jacobian.colRange(10, 10+ndistCoeffs));
} }
cvProjectPoints2( &c_objectPoints, &c_rvec, &c_tvec, &c_cameraMatrix, cvProjectPoints2( &c_objectPoints, &c_rvec, &c_tvec, &c_cameraMatrix, &c_distCoeffs,
(distCoeffs.empty())? 0: &c_distCoeffs,
&c_imagePoints, pdpdrot, pdpdt, pdpdf, pdpdc, pdpddist, aspectRatio ); &c_imagePoints, pdpdrot, pdpdt, pdpdf, pdpdc, pdpddist, aspectRatio );
} }

View File

@ -460,20 +460,23 @@ int cv::estimateAffine3D(InputArray _from, InputArray _to,
double param1, double param2) double param1, double param2)
{ {
Mat from = _from.getMat(), to = _to.getMat(); Mat from = _from.getMat(), to = _to.getMat();
int count = from.checkVector(3, CV_32F); int count = from.checkVector(3);
CV_Assert( count >= 0 && to.checkVector(3, CV_32F) == count ); CV_Assert( count >= 0 && to.checkVector(3) == count );
_out.create(3, 4, CV_64F); _out.create(3, 4, CV_64F);
Mat out = _out.getMat(); Mat out = _out.getMat();
_inliers.create(count, 1, CV_8U, -1, true); _inliers.create(count, 1, CV_8U);
Mat inliers = _inliers.getMat(); Mat inliers = _inliers.getMat();
inliers = Scalar::all(1); inliers = Scalar::all(1);
transpose(inliers, inliers);
Mat dFrom, dTo; Mat dFrom, dTo;
from.convertTo(dFrom, CV_64F); from.convertTo(dFrom, CV_64F);
to.convertTo(dTo, CV_64F); to.convertTo(dTo, CV_64F);
dFrom = dFrom.reshape(3, 1);
dTo = dTo.reshape(3, 1);
CvMat F3x4 = out; CvMat F3x4 = out;
CvMat mask = inliers; CvMat mask = inliers;

View File

@ -16,6 +16,8 @@ import functools
import cv2.cv as cv import cv2.cv as cv
from test2 import *
class OpenCVTests(unittest.TestCase): class OpenCVTests(unittest.TestCase):
depths = [ cv.IPL_DEPTH_8U, cv.IPL_DEPTH_8S, cv.IPL_DEPTH_16U, cv.IPL_DEPTH_16S, cv.IPL_DEPTH_32S, cv.IPL_DEPTH_32F, cv.IPL_DEPTH_64F ] depths = [ cv.IPL_DEPTH_8U, cv.IPL_DEPTH_8S, cv.IPL_DEPTH_16U, cv.IPL_DEPTH_16S, cv.IPL_DEPTH_32S, cv.IPL_DEPTH_32F, cv.IPL_DEPTH_64F ]
@ -2200,10 +2202,6 @@ class DocumentFragmentTests(OpenCVTests):
self.assertEqual(self.hashimg(h1), self.hashimg(h3)) self.assertEqual(self.hashimg(h1), self.hashimg(h3))
self.assertNotEqual(self.hashimg(h1), self.hashimg(h2)) self.assertNotEqual(self.hashimg(h1), self.hashimg(h2))
class NewTests(OpenCVTests):
pass
if __name__ == '__main__': if __name__ == '__main__':
print "testing", cv.__version__ print "testing", cv.__version__
random.seed(0) random.seed(0)