由摄像机拍取并进行标定与矫正
步骤:
1.确定基础设置
//设置1 图像的尺寸
const int nImageW = 2592;
const int nImageH = 1944;
//设置2 棋盘X方向上角点数量
const int nChessBoardWidthCount = 7;
//设置3 棋盘Y方向上角点数量
const int nChessBoardHeightCount = 5;
CvSize szChessBoardSize = cvSize(nChessBoardWidthCount, nChessBoardHeightCount);
const int nOneChessBoardCornerCount = nChessBoardWidthCount *nChessBoardHeightCount;
//设置4 读取的图像名称
char chFileName[] = "01.bmp";
//设置5 图像数量
const int nImageCount = 23;
//设置6 棋盘格子的边长
float fSquareSize = 25.6;
2.获取多角度的照片,进行棋盘格角点检测
运用cvFindChessboardCorners()以及cvFindCornerSubPix()检测角点
运用cvDrawChessboardCorners()绘制角点
3.将图像二维坐标转换成世界坐标
cvProjectPoints2()计算三维点投影到二维图像平面上的坐标
cvNorm()计算每幅图片的误差
4.使用cvCalibrateCamera2()获取
Mat intrinsic; //相机内参数
Mat distortion_coeff; //相机畸变参数
vector<mat> rvecs; //旋转向量
vector<mat> tvecs; //平移向量
5.使用cvUndistort2()矫正畸变