三、
#张大可修改
#调用各种库文件
import cv2
import glob
import numpy as np
#设置使用的棋盘规格,cbraw为列数,cbcol为行数
cbraw = 11
cbcol = 8
# prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
#得到objp为cbraw*cbcol行,3列的0矩阵
objp = np.zeros((cbraw*cbcol,3), np.float32)
'''
设定世界坐标下点的坐标值,因为用的是棋盘可以直接按网格取;
假定棋盘正好在x-y平面上,这样z=0,简化初始化步骤。
mgrid把列向量[0:cbraw]复制了cbcol列,[0:cbcol]复制了cbraw行。
转置reshape后,每行都是8*11网格中的某个点的坐标。
'''
#得到objp[[ 0., 0., 0.],[ 6., 0., 0.],[ 12., 0., 0.]一共有cbraw*cbcol个,其中修改的是棋盘格的边长15
objp[:,:2] = np.mgrid[0:cbraw*15:15,0:cbcol*15:15].T.reshape(-1,2)
#print('objp',objp)
objpoints = [] # 3d point in real world space
imgpoints = [] # 2d points in image plane.
#glob是个文件名管理工具
images = glob.glob("E:\picture\last\liaoding2\*.bmp")
for fname in images:
#对每张图片,识别出角