opencv4.7畸变校正
时间: 2023-08-31 15:12:27 浏览: 99
在 OpenCV 中,可以使用 calibration 模块来进行相机的畸变校正。下面是一个简单的畸变校正的示例代码:
```python
import cv2
import numpy as np
# 棋盘格大小
square_size = 24
# 棋盘格内角点数
pattern_size = (9, 6)
# 加载棋盘格图片
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([objpoints], [corners], gray.shape[::-1], None, None)
# 对图像进行畸变校正
newcameramtx, roi = cv2.getOptimalNewCameraMatrix(mtx, dist, gray.shape[::-1], 1, gray.shape[::-1])
dst = cv2.undistort(img, mtx, dist, None, newcameramtx)
# 显示校正前后的图片
cv2.imshow('original', img)
cv2.imshow('undistorted', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先加载了一张棋盘格图片,然后使用 `cv2.findChessboardCorners()` 函数查找棋盘格内角点。接下来,我们使用 `cv2.calibrateCamera()` 函数计算相机的标定系数。最后,我们使用 `cv2.undistort()` 函数对图像进行畸变校正。
需要注意的是,在实际应用中,我们需要采集多张不同角度的棋盘格图片,并使用 `cv2.calibrateCamera()` 函数对相机进行标定,以获得更准确的畸变校正效果。
阅读全文