StereoVision::calibrateStereo调用
for(i=0;success1<n_boards;i++)
{
bool result=false;
lr = i % 2;
vector<vector<Point2f> >& pts = points[lr]; //pts apunta a los puntos de la camara con la que se trabaja (left-right)
//Adquirimos las dos imagenes a la vez (una vez cada 2 pasadas)
if(!lr)
clickToCapture(color); //guarda en color la captura simultanea de las 2 camaras. color es un vector con las dos imagenes
//FIND CHESSBOARDS AND CORNERS THEREIN:
result=findChessboardCorners(color[lr],patternSize,temp,CV_CALIB_CB_ADAPTIVE_THRESH+CV_CALIB_CB_FILTER_QUADS);
if( result ) //Si el resultado de la busqueda de esquinas es bueno
{
// Get subpixel accuracy on those corners
cvtColor(color[lr], img, CV_BGR2GRAY);
cornerSubPix(img,temp,Size(11,11),Size(-1,-1),TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 0.01));
// Draw it
drawChessboardCorners(color[lr],patternSize,Mat_<Point2f>(temp),result);
if(lr)
imshow( "Right camera capture result", color[lr] );
else
imshow( "Left camera capture result", color[lr] );
pts.push_back(temp);
fallo[lr]=false;
}
else {
fallo[lr]=true;
}
int StereoVision::calibrateStereo(int nx, int ny, int n_boards, float squareSize) { bool singleCamara=true; //true hace el calibrado de las camaras por separado y luego el estereo. False sol