opencv标定板标定程序
时间: 2023-07-29 22:09:43 浏览: 125
下面是一个使用OpenCV进行标定板标定的简单程序示例:
```python
import numpy as np
import cv2
# 准备标定板参数
board_size = (9, 6) # 标定板内角点数目
square_size = 25.0 # 每个方格的物理尺寸(毫米)
# 准备标定板角点的真实世界坐标
objp = np.zeros((board_size[0] * board_size[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:board_size[0], 0:board_size[1]].T.reshape(-1, 2) * square_size
# 存储所有图像的角点和物理坐标
obj_points = [] # 真实世界坐标
img_points = [] # 图像坐标
# 检测和提取角点
cap = cv2.VideoCapture(0) # 打开相机
while True:
ret, frame = cap.read() # 读取相机图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 转换为灰度图像
ret, corners = cv2.findChessboardCorners(gray, board_size, None) # 检测角点
if ret:
obj_points.append(objp)
img_points.append(corners)
cv2.drawChessboardCorners(frame, board_size, corners, ret)
cv2.imshow('Chessboard', frame)
if cv2.waitKey(1) == ord('q'): # 按下 'q' 键退出循环
break
cap.release()
cv2.destroyAllWindows()
# 相机标定
ret, camera_matrix, dist_coeffs, rvecs, tvecs = cv2.calibrateCamera(
obj_points, img_points, gray.shape[::-1], None, None
)
# 打印相机内参矩阵和畸变系数
print("相机内参矩阵:")
print(camera_matrix)
print("\n畸变系数:")
print(dist_coeffs)
```
这个程序首先准备了标定板的参数,包括内角点数目和每个方格的物理尺寸。然后通过相机拍摄一系列包含标定板的图像,并检测提取图像中的角点。最后,使用`calibrateCamera`函数进行相机标定,并打印出相机的内参矩阵和畸变系数。
请注意,在运行程序之前,确保你的计算机连接了摄像头,并且已经安装了OpenCV库。希望这个示例能帮助到你!如果你还有其他问题,请随时提问。
阅读全文