文章目录
-
- [1. 背景](#1. 背景)
- [2. 完整的 opencv python 标定相机内参过程](#2. 完整的 opencv python 标定相机内参过程)
- [3. 选择是否计算畸变参数 k3](#3. 选择是否计算畸变参数 k3)
1. 背景
畸变参数 k3
通常用于描述径向畸变的更高阶效应,即在需要高精度的应用中可以用到,一般的应用中 k1, k2
足矣。
常见的应用中, orbslam3 中是否传入 k3
是可选的,而 kalibr 标定中则只需要传入 k1, k2
。但计算 k3
时的 k1, k2
不等于不计算 k3
时的 k1, k2
,因此需要学会计算两种场景下参数的计算。
2. 完整的 opencv python 标定相机内参过程
参考:https://blog.csdn.net/zong596568821xp/article/details/115286088
3. 选择是否计算畸变参数 k3
在调用 cv.calibrateCamera()
时,传入参数 flags=cv.CALIB_FIX_K3
即可,代码如下:
python
# 1. 计算 k1, k2, k3
ret, mtx, dist, rvecs, tvecs = cv.calibrateCamera(
objectPoints=objpoints, imagePoints=imgpoints, imageSize=imageSize, cameraMatrix=None, distCoeffs=None
)
# Camera.k1: -0.0503
# Camera.k2: 0.0654
# Camera.k3: -0.0200
python
# 2. 计算 k1, k2
ret, mtx, dist, rvecs, tvecs = cv.calibrateCamera(
objectPoints=objpoints, imagePoints=imgpoints, imageSize=imageSize, cameraMatrix=None, distCoeffs=None, flags=cv.CALIB_FIX_K3
)
# Camera.k1: -0.0355
# Camera.k2: 0.0346