opencv畸变校正
时间: 2023-11-08 21:06:07 浏览: 82
OpenCV中的畸变校正可以通过cv2.undistort()函数实现。该函数需要输入原始图像、相机内参矩阵、畸变系数等参数,输出校正后的图像。具体实现步骤为:首先使用cv2.calibrateCamera()函数计算相机内参矩阵和畸变系数;然后使用cv2.undistort()函数对原始图像进行畸变校正。
以下是一个简单的畸变校正示例代码:
```
import cv2
import numpy as np
# 读取原始图像
img = cv2.imread('distorted.jpg')
# 相机内参矩阵
K = np.array([[fx, 0, cx],
[0, fy, cy],
[0, 0, 1]])
# 畸变系数
dist_coef = np.array([k1, k2, p1, p2])
# 计算畸变校正映射
new_K, roi = cv2.getOptimalNewCameraMatrix(K, dist_coef, img.shape[:2], 1)
mapx, mapy = cv2.initUndistortRectifyMap(K, dist_coef, None, new_K, img.shape[:2], cv2.CV_32FC1)
# 畸变校正
dst = cv2.remap(img, mapx, mapy, cv2.INTER_LINEAR)
# 显示结果
cv2.imshow('original', img)
cv2.imshow('undistorted', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
```