(九)OpenCV其它功能_03_相机标定
- 相机标定:(来源百度百科)
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,
必须建立相机成像的几何模型,这些几何模型参数就是相机参数;(内参矩阵,外参矩阵)
在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定);
无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,
其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性;
所以做好相机标定是做好后续工作的前提 - 相机标定的目的:获取摄像机的内参和外参矩阵,内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像;
相机标定的输入:标定图像上所有内角点的图像坐标,标定板图像上所有内角点的空间三维坐标(一般情况下假定图像位于Z=0平面上);
相机标定的输出:摄像机的内参、外参系数;
参照https://www.cnblogs.com/silencexiaoyou/p/10717342.html - 流程
准备标定图片
对每一张标定图片,提取角点信息
对每一张标定图片,进一步提取亚像素角点信息
在棋盘标定图上绘制找到的内角点(非必须,仅为了显示)
相机标定
对标定结果进行评价
查看标定效果——利用标定结果对棋盘图进行矫正 - OpenCV支持三种类型的对象进行校准:
古典黑白棋盘
对称圆圈纹
不对称圆形图案
参照https://blog.****.net/mars_xiaolei/article/details/88845836 - 使用OpenCV自带单相机标定文件
参照:https://blog.****.net/qq_34883512/article/details/102475290
文件路径是:sources/samples/cpp/tutorial_code/calib3d/camera_calibration
图片路径是:sources/samples/data
打开如下所示: - 步骤:
1)打开VID5.xml文件修改图片文件与路径
2)打开in_VID5.xml文件,19行修改为VID5.xml文件路径,27行修改为图片数目
3)打开camera_calibration.cpp文件,274行修改 “const string inputSettingsFile = argc > 1 ? argv[1] :in_VID5.xml文件路径”
运行结果: