Opencv标定图片-python
以下是Python中使用OpenCV进行相机标定的示例代码:
import numpy as np
import cv2
import glob
# 设置标定板的尺寸
board_size = (9, 6)
# 设置标定板的实际大小(单位:mm)
square_size = 25
# 生成标定板的世界坐标
objp = np.zeros((np.prod(board_size), 3), np.float32)
objp[:, :2] = np.mgrid[0:board_size[0], 0:board_size[1]].T.reshape(-1, 2)
objp *= square_size
# 存储世界坐标和图像坐标的数组
objpoints = [] # 世界坐标
imgpoints = [] # 图像坐标
# 获取标定板图像文件名列表
images = glob.glob('calibration/*.jpg')
# 循环处理每张标定板图像
for fname in images:
img = cv2.imread(fname)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 查找标定板角点
ret, corners = cv2.findChessboardCorners(gray, board_size, None)
# 如果找到了角点,添加世界坐标和图像坐标到数组中
if ret == True:
objpoints.append(objp)
imgpoints.append(corners)
# 可视化角点
cv2.drawChessboardCorners(img, board_size, corners, ret)
cv2.imshow('img', img)
cv2.waitKey(500)
cv2.destroyAllWindows()
# 执行相机标定
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)
# 打印标定结果
print("Camera matrix:\n", mtx)
print("Distortion coefficients:\n", dist)
此代码假定所有标定板图像都存储在名为“calibration”的文件夹中,并且标定板的大小为9x6,每个方格的大小为25mm。在执行相机标定后,代码打印相机矩阵和畸变系数。
原文地址: https://www.cveoy.top/t/topic/qnm 著作权归作者所有。请勿转载和采集!