python+opencv得到相机内参矩阵和畸变系数后,怎么得到去畸变图像
时间: 2023-06-19 16:05:44 浏览: 118
使用OpenCV中的`undistort`函数可以得到去畸变后的图像。具体操作步骤如下:
1. 读取图像和相机参数
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 读取相机参数
camera_matrix = np.array([[fx, 0, cx], [0, fy, cy], [0, 0, 1]])
dist_coeffs = np.array([k1, k2, p1, p2, k3])
```
2. 使用`undistort`函数进行去畸变
```python
# 获取图像尺寸
h, w = img.shape[:2]
# 计算新的相机矩阵
new_camera_matrix, roi = cv2.getOptimalNewCameraMatrix(camera_matrix, dist_coeffs, (w, h), 1, (w, h))
# 去畸变
dst = cv2.undistort(img, camera_matrix, dist_coeffs, None, new_camera_matrix)
```
其中,`cv2.getOptimalNewCameraMatrix`函数用于计算新的相机矩阵,`roi`是一个元组,表示去畸变后图像的有效区域。
3. 显示去畸变后的图像
```python
cv2.imshow('Undistorted Image', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
通过以上步骤,可以得到去畸变后的图像。