Comment puis-je résoudre l'erreur?Aucune fonction de conversion appropriée de "CvTermCriteria" à "int" n'existe
J'utilise un programme qui a fait pour OpenCV 2.x mais je le compile sur OpenCV 3.0, et une erreur est apparue. Je change CvTermCriteria à TermCriteria :: TermCriteria mais cela ne fonctionne pas. Comment est-ce que je pourrais changer CvTermCriteria pour être int?
J'espère que quelqu'un pourrait m'aider. Merci
erreur est apparu à cette partie:
cvStereoCalibrate(&_objectPoints, &_imagePoints1, &_imagePoints2, &_npoints,&_M1calib, &_D1, &_M2calib, &_D2,imageSize, &_R, &_Tcalib, &_E, &_F,
cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 100, 1e-5),
CV_CALIB_FIX_ASPECT_RATIO+CV_CALIB_ZERO_TANGENT_DIST + CV_CALIB_SAME_FOCAL_LENGTH);
Voici le code source:
//--------------Compute for calibration-------------------
N = n_boards*n;
objectPoints.resize(N);
for(i = 0; i < ny; i++)
for(j = 0; j < nx; j++) objectPoints[i*nx + j] = cvPoint3D32f(i*squareSize, j*squareSize, 0);
for(i = 1; i < n_boards; i++) copy(objectPoints.begin(), objectPoints.begin() + n, objectPoints.begin() + i*n);
npoints.resize(n_boards,n);
CvMat _objectPoints = cvMat(1, N, CV_32FC3, &objectPoints[0]);
CvMat _imagePoints1 = cvMat(1, N, CV_32FC2, &points[0][0]);
CvMat _imagePoints2 = cvMat(1, N, CV_32FC2, &points[1][0]);
CvMat _npoints = cvMat(1, npoints.size(), CV_32S, &npoints[0]);
cvSetIdentity(&_M1calib);
cvSetIdentity(&_M2calib);
cvZero(&_D1);
cvZero(&_D2);
printf("\nRunning stereo calibration ...");
fflush(stdout);
cvStereoCalibrate(&_objectPoints, &_imagePoints1, &_imagePoints2, &_npoints,&_M1calib, &_D1, &_M2calib, &_D2,imageSize, &_R, &_Tcalib, &_E, &_F,
cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 100, 1e-5),
CV_CALIB_FIX_ASPECT_RATIO+CV_CALIB_ZERO_TANGENT_DIST + CV_CALIB_SAME_FOCAL_LENGTH);
printf("\nDone Calibration");
cvUndistortPoints(&_imagePoints1, &_imagePoints1,&_M1calib, &_D1, 0, &_M1calib);
cvUndistortPoints(&_imagePoints2, &_imagePoints2,&_M2calib, &_D2, 0, &_M2calib);
CvMat* mx1calib = cvCreateMat(imageSize.height,imageSize.width, CV_32F);
CvMat* my1calib = cvCreateMat(imageSize.height,imageSize.width, CV_32F);
CvMat* mx2calib = cvCreateMat(imageSize.height,imageSize.width, CV_32F);
CvMat* my2calib = cvCreateMat(imageSize.height,imageSize.width, CV_32F);
double R1[3][3], R2[3][3], P1[3][4], P2[3][4];
CvMat _R1 = cvMat(3, 3, CV_64F, R1);
CvMat _R2 = cvMat(3, 3, CV_64F, R2);
CvMat _P1 = cvMat(3, 4, CV_64F, P1);
CvMat _P2 = cvMat(3, 4, CV_64F, P2);
cvStereoRectify(&_M1calib, &_M2calib, &_D1, &_D2, imageSize,&_R, &_Tcalib,&_R1, &_R2, &_P1, &_P2, &_Qcalib,0/*CV_CALIB_ZERO_DISPARITY*/);
cvInitUndistortRectifyMap(&_M1calib,&_D1,&_R1,&_P1,mx1calib,my1calib);
cvInitUndistortRectifyMap(&_M2calib,&_D2,&_R2,&_P2,mx2calib,my2calib);
printf("\nSaving matries for later use ...\n");
cvSave("CalibFile//M1.yml",&_M1calib);
// cvSave("CalibFile//D1.yml",&_D1);
// cvSave("CalibFile//R1.yml",&_R1);
// cvSave("CalibFile//P1.yml",&_P1);
cvSave("CalibFile//M2.yml",&_M2calib);
// cvSave("CalibFile//D2.yml",&_D2);
// cvSave("CalibFile//R2.yml",&_R2);
// cvSave("CalibFile//P2.yml",&_P2);
cvSave("CalibFile//Q.yml",&_Qcalib);
cvSave("CalibFile//T.yml",&_Tcalib);
cvSave("CalibFile//mx1.yml",mx1calib);
cvSave("CalibFile//my1.yml",my1calib);
cvSave("CalibFile//mx2.yml",mx2calib);
cvSave("CalibFile//my2.yml",my2calib);
S'il vous plaît montrer le code .... Voir comment faire un [mcve] – Miki