一 提取圆心点cv::findCirclesGrid
cv::findCirclesGrid( InputArray image, Size patternSize,
OutputArray centers, int flags,
FeatureDetector blobDetector,
CirclesGridFinderParameters parameters )
1.image:输入图像,灰度图。
2. patternSize:检测的网络模式大小,即网格中的行数和列数,类型为Size。
3. centers: 输出参数,用于存储检测到的圆的中心点坐标。
4. flags: 操作标志,可以用来设置不同的检测方法,例如:
● CALIB_CB_SYMMETRIC_GRID:用于检测对称的圆网格。
● CALIB_CB_ASYMMETRIC_GRID:用于检测非对称的圆网格。
二 进行相机标定cv::calibratecamera
double calibrateCamera(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON) )
1.objectPoints: 世界坐标中的点,对于每个视图,它是一个二维或三维点数组。每个视图的点数必须与 imagePoints 中相应视图的点数相匹配(真实点的坐标,通过计算的来的)。
2.imagePoints: 图像坐标中的点,与 objectPoints 对应(像素点的坐标,就是将findCirclesGird参数中的centers,imagePoints.emplace_back(centers))。
3.imageSize:图像的尺寸,格式为 cv::Size(width, height) 。
4.cameraMatrix:输出的 3x3 相机内参矩阵。
5.distCoeffs:输出的 5 或 8 个畸变系数向量。
6.rvecs:每个视图的旋转向量。
7.tvecs:每个视图的平移向量。