python opencv摄像头标定
时间: 2023-08-23 18:07:58 浏览: 174
要对摄像头进行标定,你可以使用OpenCV提供的`cv2.calibrateCamera()`函数。以下是一个简单的示例代码来进行摄像头标定:
```python
import numpy as np
import cv2
# 创建棋盘格模板的行数和列数
rows = 6
cols = 9
# 创建棋盘格模板的物理尺寸(单位:mm)
square_size = 25 # 棋盘格方块的边长
# 创建棋盘格角点的坐标
objp = np.zeros((rows * cols, 3), np.float32)
objp[:, :2] = np.mgrid[0:cols, 0:rows].T.reshape(-1, 2)
objp *= square_size
# 存储棋盘格角点的物理坐标和图像坐标
objpoints = [] # 真实世界中的角点坐标
imgpoints = [] # 图像中检测到的角点坐标
# 获取摄像头图像并查找棋盘格角点
cap = cv2.VideoCapture(0) # 0表示默认摄像头,如果有多个摄像头,请按需选择摄像头索引
while True:
ret, frame = cap.read() # 读取视频流的一帧
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 将图像转换为灰度图像
# 查找棋盘格角点
ret, corners = cv2.findChessboardCorners(gray, (cols, rows), None)
if ret == True:
objpoints.append(objp)
imgpoints.append(corners)
# 在图像上绘制棋盘格角点
cv2.drawChessboardCorners(frame, (cols, rows), corners, ret)
# 显示图像
cv2.imshow("Frame", frame)
# 按下 'q' 键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 标定摄像头
ret, mtx, dist, rvecs, tv
阅读全文