之前手眼标定数据不对,要分析找问题原因,这个过程还是有意思的。正值出差,搞起来也费劲。所以只能趁有兴致的时候多看点儿。总体思路是先参考别人已经成功的。本身opencv官方是有相机标定例程的,官方出版的。
这次使用的是在网上找到的,网址如下:https://blog.csdn.net/wanggao_1990/article/details/81435660。
选择它的原因是作者放了成功的视频,是可信的。代码是Windows上的,而且是18年的,但是不过时。我改了改初步相机标定在Linux上能跑了,有些也是官方修改的。示例图片像素被修改成了640*480.
用了7张图片,数据如下:
第1幅图像的旋转向量 Rodrigues :
[-0.05149355932689637;
0.01487833518464866;
3.000488603770798]
第1幅图像的旋转矩阵:
[-0.9895425854003568, -0.1403092547286335, -0.03344823936581949;
0.1399706477971569, -0.9900796227727321, 0.01227022108394291;
-0.03483804578936621, 0.007460134563130718, 0.9993651269470419]
第1幅图像的平移向量:
[-36.91372736334754;
8.308291589584055;
709.3787803956336]
第2幅图像的旋转向量 Rodrigues :
[0.488974592478346;
-0.1205156983785633;
-2.512690656116714]
第2幅图像的旋转矩阵:
[-0.7701657829120021, 0.5199764602562721, -0.3694173082178207;
-0.552944861407021, -0.8329851868150883, -0.01968905254710909;
-0.3179569893477939, 0.1891035677241178, 0.9290550003088601]
第2幅图像的平移向量:
[33.82383794619571;
105.7304336901306;
846.0021591946745]
第3幅图像的旋转向量 Rodrigues :
[0.2705388033740696;
-0.238012525429542;
-2.882226983696673]
第3幅图像的旋转矩阵:
[-0.9549559208185002, 0.217854243821622, -0.2014912349026618;
-0.2479557639049546, -0.9588222445643874, 0.1384840874426391;
-0.1630249319582769, 0.1822071123129372, 0.9696511949059717]
第3幅图像的平移向量:
[32.87482589341693;
150.718281593237;
848.4698284338133]
第4幅图像的旋转向量 Rodrigues :
[0.531753786027314;
-0.09672356397341729;
2.851468015231541]
第4幅图像的旋转矩阵:
[-0.9053077298242185, -0.2449665959252231, 0.3470004051889974;
0.2208896397791463, -0.9693015098713142, -0.1079923608383;
0.3628025376961398, -0.02111752452346379, 0.9316267325486327]
第4幅图像的平移向量:
[247.9691901639762;
-30.94128684871647;
648.6082496329917]
第5幅图像的旋转向量 Rodrigues :
[0.2179153933351702;
-0.3995323075936519;
2.86857095888208]
第5幅图像的旋转矩阵:
[-0.9609115993395618, -0.2523799542183938, 0.1138123761434008;
0.2116745047609584, -0.9346972419455147, -0.2855432890712913;
0.1784455163036843, -0.250290680226351, 0.9515838234769136]
第5幅图像的平移向量:
[59.35603152374988;
-58.21706097339221;
603.1997234607085]
第6幅图像的旋转向量 Rodrigues :
[0.249732350410164;
-0.130863215738389;
3.109924503800331]
第6幅图像的旋转矩阵:
[-0.9870306747789306, -0.02553802423816023, 0.1584874012767581;
0.01213326682036443, -0.9963089958377741, -0.08497745965249839;
0.1600725800432881, -0.08195238941444777, 0.9836974001122236]
第6幅图像的平移向量:
[219.6055698905182;
133.1269932588722;
577.1780282567129]
第7幅图像的旋转向量 Rodrigues :
[0.1118561938136054;
0.1854284835005874;
-2.891386129713436]
第7幅图像的旋转矩阵:
[-0.9679015456747291, 0.2439427303959619, -0.06048588403448674;
-0.2342180543321797, -0.962774166187418, -0.1349363107060891;
-0.09115097863061308, -0.1164381776269498, 0.9890063952703215]
第7幅图像的平移向量:
[199.3678300837788;
94.08135932029448;
668.0345329568327]
经过对作者代码的学习,发现之前objectPoints数据有问题;初步修改后还不对。后续将之前的的相机标定流程改成和作者一样的,显示找到的角点,继续探索。目前也算是有了排查方向。加油,奥利给!
需要Linux下原作者程序可以后台留言“官方相机标定流程”。
工程是Qt构建的。