最近开始接触TOF相机,一上来就遇到了标定问题。查了opencv-python tutorial,发现给了例程。由于较长时间没碰python,opencv也没学过,很多地方看不懂,这篇博客当作个人对例程的理解。
简述
网上有很多优秀的解释相机标定的博客,我摘了两篇自己参考的。
简单而言,我们拍摄的物体都处于三维世界坐标系中,而相机拍摄时镜头看到的是三维相机坐标系,成像时三维相机坐标系向二维图像坐标系转换。不同的镜头成像时的转换矩阵不同,同时可能引入失真,标定的作用是近似地估算出转换矩阵和失真系数。为了估算,需要知道若干点的三维世界坐标系中的坐标和二维图像坐标系中的坐标,也就是拍摄棋盘的意义。
例程
注:tutorial的例程是片段的,下面是我自己整理起来的程序。
#-*- coding:utf-8 -*-
import cv2
import glob
import numpy as np
'''
cbraw和cbcol是我自己加的。tutorial用的棋盘足够大包含了7×6以上
个角点,我自己用的只有6×4。这里如果角点维数超出的话,标定的时候会报错。
&