摄像头标定

今天在调试摄像头标定的时候发现了几个问题:

fs.open("result.xml", FileStorage::WRITE);
fs<<"cameraMatrix"<<cameraMatrix;
fs<<"distortCoeffs"<<distCoeffs;
fs.release();

字符串中间不能空格

初始化必须加(1)

vector< vector<Point3f> > objectPoints(1);

否则

objectPoints[0].clear();
for( int i = 0; i < boardheight; ++i )
for( int j = 0; j < boardwidth; ++j )
objectPoints[0].push_back(Point3f(float( j*squareSize ), float( i*squareSize ), 0));

这里会push不了

用了两组图像来标定,结果有很大差异

从两组图像本身来说,格点数量不一样,图像分辨率也不一样

希望能分析出一些结论

在用棋盘格标定的时候,应使得棋盘不仅有多个角度,还应注意要是棋盘遍历到画面的各个位置,否则如果只集中在中部的话,就会使得中部去畸效果较好,而四个角的效果反而变差的结果,这一点在手动标定的时候应该尤为注意 

稍后会来详细讨论一下

原文地址:https://www.cnblogs.com/marcworld/p/3746542.html