本篇博客主要介绍cv2模块中的摄像头标定。
摄像头会发生径向畸变和切向畸变。
摄像头的内部参数和外部参数。内部参数是摄像头特异的,它包括的信息有x方向和y方向的焦距(fx, fy),光圈中心(cx, cy),相机的内部参数也称为摄像头矩阵。
在进行摄像头标定时至少需要使用10张图案模式,3D点称为对象点,2D点称为图像点,可以使用棋盘或者环形格子来进行摄像头标定,使用函数cv2.findCircleGrid()来找图案。
代码示例:
# encoding:utf-8
import numpy as np
import cv2
import glob
# 设置终止条件,迭代30次或移动0.001
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
# 准备对象点,类似(0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
objp = np.zeros((6 * 7, 3), np.float32)
objp[:, : 2] = np.mgrid[0: 7, 0: 6].T.reshape(-1, 2) # np.mgrid()返回多维结构
# 从所有图像中存储对象点和图像点的数组
objpoints = [] # 真实世界的3D点
imgpoints = [] # 图