opencv实现单目标定和畸变矫
时间: 2023-11-05 10:04:33 浏览: 95
正的步骤如下:
1. 拍摄棋盘格图像:使用相机拍摄一张包含棋盘格的图像。确保拍摄时相机的位置和姿态与实际使用时相同。
2. 提取角点:使用OpenCV提供的`findChessboardCorners`函数在图像中提取棋盘格的角点坐标。
3. 标定相机:使用提取的角点坐标和相应的物理坐标,使用`calibrateCamera`函数标定相机并获得相机内参矩阵和畸变系数。
4. 矫正图像:使用`undistort`函数对图像进行畸变矫正。
代码示例:
```python
import cv2
import numpy as np
# 棋盘格尺寸
square_size = 2.5 # 单位:厘米
pattern_size = (9, 6) # 棋盘格内角点数量
# 创建物理坐标
objp = np.zeros((pattern_size[0]*pattern_size[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:pattern_size[0], 0:pattern_size[1]].T.reshape(-1, 2) * square_size
# 读取图像
img = cv2.imread('chessboard.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 获取角点
ret, corners = cv2.findChessboardCorners(gray, pattern_size, None)
# 标定相机
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera([objp], [corners], gray.shape[::-1], None, None)
# 矫正图像
undistorted = cv2.undistort(img, mtx, dist)
cv2.imshow('Original', img)
cv2.imshow('Undistorted', undistorted)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文