• 大小: 3KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Python
  • 标签: 相机标定  

资源简介

单目相机标定,棋盘格畸变纠正,附带代码注释,输出内参,外参,畸变函数

资源截图

代码片段和文件信息

import cv2
import numpy as np
import glob

# 找棋盘格角点
# 阈值 
#criteria:角点精准化迭代过程的终止条件
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER 30 0.001)
#棋盘格模板规格
w = 6
h = 9
# 世界坐标系中的棋盘格点例如(000) (100) (200) ....(850),去掉Z坐标,记为二维矩阵
objp = np.zeros((w*h3) np.float32)
‘‘‘
设定世界坐标下点的坐标值,因为用的是棋盘可以直接按网格取;
假定棋盘正好在x-y平面上,这样z值直接取0,简化初始化步骤。
mgrid把列向量[0:cbraw]复制了cbcol列,把行向量[0:cbcol]复制了cbraw行。
转置reshape后,每行都是4×6网格中的某个点的坐标。
‘‘‘
objp[::2] = np.mgrid[0:w0:h].T.reshape(-12)
# 储存棋盘格角点的世界坐标和图像坐标对
objpoints = [] # 在世界坐标系中的三维点
imgpoints = [] # 在图像平面的二维点
#glob是个文件名管理工具
images = glob.glob(‘/home/fanfan/相机标定/*.jpeg‘)

#对每张图片,识别出角点,记录世界物体坐标和图像坐标
for fname in images:
    img = cv2.imread(fname)
    gray = cv2.cvtColor(imgcv2.COLOR_BGR2GRAY)
    # 找到棋盘格角点
     #寻找角点,存入corners,ret是找到角点的flag
    ret corners = cv2.findChessboardCorners(gray (wh)None)
    # 如果找到足够点对,将其存储起来
    if ret == True:
        #执行亚像素级角点检测
        cv2.cornerSubPix(graycorners(1111)(-1-1)criteria)
        objpoints.append(objp)
        imgpoints.append(corners)
        # 将角点在图像上显示
        #在棋盘上绘制角点只是可视化工具
        cv2.drawChessboardCorners(img (wh) corners ret)
 

评论

共有 条评论