单目相机标定python+opencv

本文详细介绍了如何使用Python和OpenCV进行单目相机标定的过程,包括准备标定板图像、提取角点信息、亚像素点定位、相机标定计算、标定效果评估和矫正。通过20-30张棋盘格图片,计算出旋转矩阵和平移向量,实现相机的精准标定。
摘要由CSDN通过智能技术生成

1.标定过程 (棋盘格见文章末尾)

  1. 准备20-30张拍摄的标定板图像,以20张图片为例。
  2. 提取20张图片的的角点信息。
  3. 在上一步的基础上,提取亚像素点(精度更高的角点坐标)。
  4. 把找到的角点在图上画出来,显得更加直观。
  5. 相机标定计算,根据上面提取到的角点坐标信息和世界坐标系中的三维点进行计算。
  6. 对标定结果进行评价
  7. 查看标定效果——利用标定结果对棋盘图进行矫正 (两种方法)

2.python+opencv

这里选择python+opencv是因为使用方便,不用像c++那样一步步配置环境库。
注意:w h为棋盘格模板长边和短边规格(角点个数),根据自己的棋盘格设置

import cv2
import numpy as np
import glob
from numpy import array as matrix, arange

# 找棋盘格角点
# 阈值
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
# w h分别是棋盘格模板长边和短边规格(角点个数)
w = 7
h = 5

# 世界坐标系中的棋盘格点,例如(0,0,0), (1,0,0), (2,0,0) ....,(8,5,0),去掉Z坐标,记为二维矩阵,认为在棋盘格这个平面上Z=0
objp = np.zeros((w * h, 3), np.float32)  # 构造0矩阵,88行3列,用于存放角点的世界坐标
objp[:, :2] = np.mgrid[0:w, 0:h].T.reshape(-1, 2)  # 三维网格坐标划分

# 储存棋盘格角点的世界坐标和图像坐标对
objpoints = []  # 在世界坐标系中的三维点
imgpoints = []  # 在图像平面的二维点
record = []

images = glob<
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值