python使用opencv实现相机外参标定

一、背景介绍

        我们在根据相机拍摄的图像,计算世界坐标,指引机器人执行各种操作。前提是需要知道相机的内外参数,这篇文章主要是讲解python使用opencv实现相机外参标定的代码,如果想了解更详细的原理,可以参考其他的文章。

二、标定工具

1、棋盘格标定板,标定板的尺寸根据具体情况来定,推荐标定板在线生成网站:Camera Calibration Pattern Generator – calib.io,在这个网站设置好标定板的参数,左侧会自动生成相应的标定板,可以下载保存成PDF,自己可以打印(1:1),也可以将此文件发送给标定版制作的人。
python使用opencv实现相机外参标定_第1张图片

2、因为要求取相机当前姿态,即旋转和平移向量,所以相机位置是固定的,标定板也固定在一个位置,且能出现在相机的视野范围内。一旦相机或标定板移动,就需要重新标定。

三、详细代码

1、主要用到的函数:

(1)retval, rvec, tvec = cv2.solvePnP(obj_points, img_points, mat_inter, coff_dis)

  • 函数功能:相机根据找到的标定板像素角点和真实坐标值以及相机的内参,得到相机当前姿态下的旋转和平移向量,分别为rvec、tvec;
  • 参数介绍:

        obj_points:标定板角点的世界坐标,左上角的角点为[0,0];

        img_points:检测到的标定板角点,是像素点(只需要一张带有标定板的图片);

        mat_inter:相机内参;

        coff_dis:相机的畸变系数,与mat_inter都是可以在相机标定内参时获取到。

2、执行过程:

(1)固定相机和标定版,确保相机视野范围内能看到完整的标定板,执行1的函数,得到相机的姿态数据;

(2)可以根据计算出来的外参,再经过重投影,计算误差。

3、代码

python使用opencv实现相机外参标定_第2张图片

相机内参标定可参考:https://download.csdn.net/download/u012803927/88251638

本链接详细代码可参考: https://download.csdn.net/download/u012803927/88251967

你可能感兴趣的:(python,opencv,相机标定,opencv,人工智能,数码相机)