相机标定

    xiaoxiao2021-12-14  20

    #include "stdafx.h" DECLAREGLOBAL int ZHANGZHENGYOUBIAODING(const char* chessdir)   {       int  CurrentImage  = 0;       int  CurrentRow    = 0;         //行        int  CurrentColumn = 0;         //列         int ChessBoardSize_w = 8;       //角点个数       int ChessBoardSize_h = 6;       bool  findcorner_result = false;       float  SquareSize=10;//方格大小                       Mat src;       Mat gray;       Mat cameraMatrix; //intrinsic       Mat distCoeffs;       vector<Mat> rvecs,tvecs;       Mat rmatrix,tmatrix;           vector<Point2f> imageCorners;//存储角点       vector<vector<Point2f>> imagePoints;       vector<vector<Point3f>> worldPoints;      vector<CString> imageArray;    GetDirFiles(chessdir,imageArray);    int NImages=imageArray.size();     //读取图片       for(CurrentImage;CurrentImage<NImages;++CurrentImage)       {           src = imread((LPCTSTR)imageArray[CurrentImage]);           //灰           cvtColor(src,gray,CV_BGR2GRAY);               //检测角点           imageCorners.clear();           findcorner_result = findChessboardCorners(gray,Size(ChessBoardSize_w,ChessBoardSize_h),imageCorners,3);         if(!findcorner_result){             DLGPRINT("%s error findChessboardCorners",(LPCTSTR)imageArray[CurrentImage]);         }else{             DLGPRINT("%s OK findChessboardCorners",(LPCTSTR)imageArray[CurrentImage]);         }         //精确坐标           cornerSubPix(gray,imageCorners,Size(10,10),Size(-1,-1),TermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,500,0.003));           imagePoints.push_back(imageCorners);           //画角点                   //drawChessboardCorners(src,Size(ChessBoardSize_w,ChessBoardSize_h),imageCorners,findcorner_result);        // imshow("Chess",src);         //DLGPRINT("print any key to read the next pic");        // waitKey();               }            DLGPRINT("开始定标");            vector<Point3f> objectsCorners;       //世界坐标系坐标       for(CurrentImage=0;CurrentImage<NImages;CurrentImage++)       {           for(CurrentRow=0;CurrentRow<ChessBoardSize_h;CurrentRow++)               for(CurrentColumn=0;CurrentColumn<ChessBoardSize_w;CurrentColumn++)                   objectsCorners.push_back(Point3f(CurrentRow*SquareSize,CurrentColumn*SquareSize,0.0));           worldPoints.push_back(objectsCorners);           objectsCorners.clear();       }         calibrateCamera(worldPoints,imagePoints,Size(ChessBoardSize_w,ChessBoardSize_h),cameraMatrix,distCoeffs,rvecs,tvecs,0);       std::cout<<cameraMatrix<<std::endl;       std::cout<<distCoeffs<<std::endl;         for(int i=0;i<NImages;++i)       {                      //std::cout<<"第"<<i<<"个图片的旋转向量"<<std::endl;           //std::cout<<rvecs[i]<<std::endl;           std::cout<<"第"<<i+1<<"个图片的旋转矩阵"<<std::endl;           Rodrigues(rvecs[i],rmatrix);           std::cout<<rmatrix<<std::endl;           std::cout<<"第"<<i+1<<"个图片的平移向量"<<std::endl;           std::cout<<tvecs[i]<<std::endl;           //开始误差分析           double err = 0.0;           vector<Point2f>undistortMatrix;           projectPoints(worldPoints[i],rmatrix,tvecs[i],cameraMatrix,distCoeffs,undistortMatrix);           err = norm(undistortMatrix,imagePoints[i]);           std::cout<<"第"<<i+1<<"张图的误差为:"<<err<<std::endl;       }           //显示校正后的图片       Mat result_image;       namedWindow("Undistort_image",0);       for(CurrentImage=0;CurrentImage<NImages;CurrentImage++)       {               Mat srcimage = imread((LPCTSTR)imageArray[CurrentImage]);               undistort(srcimage,result_image,cameraMatrix,distCoeffs);               imshow("Undistort_image",result_image);               DLGPRINT("按任意键显示下一幅图片。。。");               waitKey(0);      }       return (0);  

    C:\img\chess\left02.jpg OK findChessboardCorners C:\img\chess\left04.jpg OK findChessboardCorners C:\img\chess\left05.jpg OK findChessboardCorners C:\img\chess\left07.jpg OK findChessboardCorners C:\img\chess\left09.jpg OK findChessboardCorners C:\img\chess\left11.jpg OK findChessboardCorners C:\img\chess\left12.jpg OK findChessboardCorners C:\img\chess\left13.jpg OK findChessboardCorners C:\img\chess\left14.jpg OK findChessboardCorners C:\img\chess\right01.jpg OK findChessboardCorners C:\img\chess\right02.jpg OK findChessboardCorners C:\img\chess\right03.jpg OK findChessboardCorners C:\img\chess\right04.jpg OK findChessboardCorners C:\img\chess\right05.jpg OK findChessboardCorners C:\img\chess\right06.jpg OK findChessboardCorners C:\img\chess\right07.jpg OK findChessboardCorners C:\img\chess\right09.jpg OK findChessboardCorners C:\img\chess\right11.jpg OK findChessboardCorners C:\img\chess\right12.jpg OK findChessboardCorners C:\img\chess\right13.jpg OK findChessboardCorners C:\img\chess\right14.jpg OK findChessboardCorners 开始定标 -------------------mat-------------------------- 535.678894 0.000000 332.888672 0.000000 535.432617 242.006912 0.000000 0.000000 1.000000 ----------------mat end-------------------- -------------------mat-------------------------- -0.300526 0.149802 0.000052 -0.000560 -0.063199 ----------------mat end-------------------- RVECS -------------------mat-------------------------- -2.408767 -0.198662 0.216968 ----------------mat end-------------------- -------------------mat-------------------------- -2.127419 -2.128250 0.384843 ----------------mat end-------------------- -------------------mat-------------------------- -0.332933 -2.935428 0.701011 ----------------mat end-------------------- -------------------mat-------------------------- 2.971486 0.482567 -0.509134 ----------------mat end-------------------- -------------------mat-------------------------- 1.932370 2.203017 0.659829 ----------------mat end-------------------- -------------------mat-------------------------- 0.247033 2.545303 0.080783 ----------------mat end-------------------- -------------------mat-------------------------- -0.024029 -3.006202 0.555750 ----------------mat end-------------------- -------------------mat-------------------------- -0.444715 -2.875168 -0.753507 ----------------mat end-------------------- -------------------mat-------------------------- 0.274657 2.710503 0.283412 ----------------mat end-------------------- -------------------mat-------------------------- -1.996382 -2.013420 0.107410 ----------------mat end-------------------- -------------------mat-------------------------- -2.432833 -0.203065 0.185693 ----------------mat end-------------------- -------------------mat-------------------------- -1.812542 -2.596642 0.526146 ----------------mat end-------------------- -------------------mat-------------------------- -2.157320 -2.139232 0.381902 ----------------mat end-------------------- -------------------mat-------------------------- -0.352335 -2.949382 0.728299 ----------------mat end-------------------- -------------------mat-------------------------- -3.008670 -0.158527 0.680003 ----------------mat end-------------------- -------------------mat-------------------------- 2.957859 0.463191 -0.471083 ----------------mat end-------------------- -------------------mat-------------------------- 1.913895 2.186117 0.657637 ----------------mat end-------------------- -------------------mat-------------------------- 0.243065 2.523972 0.061037 ----------------mat end-------------------- -------------------mat-------------------------- -0.040455 -3.022564 0.587618 ----------------mat end-------------------- -------------------mat-------------------------- -0.448522 -2.907204 -0.739180 ----------------mat end-------------------- -------------------mat-------------------------- 0.270287 2.691149 0.264340 ----------------mat end-------------------- tvecs -------------------mat-------------------------- -19.988886 23.757114 135.684052 ----------------mat end-------------------- -------------------mat-------------------------- -27.348545 -28.622829 129.982254 ----------------mat end-------------------- -------------------mat-------------------------- 27.477587 -38.877304 121.149429 ----------------mat end-------------------- -------------------mat-------------------------- -56.649239 21.068739 169.330826 ----------------mat end-------------------- -------------------mat-------------------------- -24.510670 -33.746979 111.023720 ----------------mat end-------------------- -------------------mat-------------------------- 21.140327 -45.984241 134.144012 ----------------mat end-------------------- -------------------mat-------------------------- 22.560535 -33.183712 124.203354 ----------------mat end-------------------- -------------------mat-------------------------- 15.558736 -37.992195 115.607452 ----------------mat end-------------------- -------------------mat-------------------------- 20.203869 -44.751049 123.997093 ----------------mat end-------------------- -------------------mat-------------------------- -54.881516 -41.291859 155.745651 ----------------mat end-------------------- -------------------mat-------------------------- -56.450920 27.112652 133.663742 ----------------mat end-------------------- -------------------mat-------------------------- -40.990997 -35.479271 123.890732 ----------------mat end-------------------- -------------------mat-------------------------- -63.884598 -25.337687 128.723404 ----------------mat end-------------------- -------------------mat-------------------------- -8.913817 -36.079464 121.589745 ----------------mat end-------------------- -------------------mat-------------------------- -18.384424 39.083179 160.100708 ----------------mat end-------------------- -------------------mat-------------------------- -93.902374 25.361036 166.436279 ----------------mat end-------------------- -------------------mat-------------------------- -60.649311 -30.763153 109.916985 ----------------mat end-------------------- -------------------mat-------------------------- -15.546039 -42.856949 134.324783 ----------------mat end-------------------- -------------------mat-------------------------- -13.929643 -30.286358 124.502472 ----------------mat end-------------------- -------------------mat-------------------------- -20.690454 -35.141682 115.443146 ----------------mat end-------------------- -------------------mat-------------------------- -16.215090 -41.770683 123.984489 ----------------mat end--------------------

    转载请注明原文地址: https://ju.6miu.com/read-970433.html

    最新回复(0)