今天在调试摄像头标定的时候发现了几个问题:
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不了
用了两组图像来标定,结果有很大差异
从两组图像本身来说,格点数量不一样,图像分辨率也不一样
希望能分析出一些结论
在用棋盘格标定的时候,应使得棋盘不仅有多个角度,还应注意要是棋盘遍历到画面的各个位置,否则如果只集中在中部的话,就会使得中部去畸效果较好,而四个角的效果反而变差的结果,这一点在手动标定的时候应该尤为注意
稍后会来详细讨论一下