ubuntu18。04相机内参标定
时间: 2025-01-29 11:27:30 浏览: 33
### 相机内参标定流程
对于在Ubuntu 18.04上执行相机内参标定的任务,可以采用OpenCV库来完成这一操作。具体来说,在准备阶段需要确保安装了必要的依赖项以及配置好环境。
#### 安装依赖包
为了能够顺利使用OpenCV进行图像处理和计算,建议先确认已经正确设置了OpenCV路径至`/usr/include/opencv`或根据实际情况调整为其他指定位置[^1]。如果尚未安装OpenCV,则可以通过以下命令来进行安装:
```bash
sudo apt-get update
sudo apt-get install libopencv-dev python3-opencv
```
#### 准备棋盘格图片集
获取一组包含不同角度拍摄的棋盘格图案的照片作为输入数据用于后续校准过程。这些照片应当覆盖尽可能多的方向变化以便获得更精确的结果。
#### 编写Python脚本实现自动标定功能
下面给出一段简单的Python代码片段展示如何利用OpenCV函数接口读取上述采集到的一系列图像文件,并调用内置算法求解内部参数矩阵K与畸变系数D:
```python
import cv2
import numpy as np
import glob
# 设置查找亚像素角点的参数,采用winSize大小窗口迭代终止条件
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
objp = np.zeros((6*9,3), np.float32)
objp[:,:2] = np.mgrid[0:9,0:6].T.reshape(-1,2)*25 # 假设方格边长为25mm
# 存储每张图中的物体坐标点(objpoints) 和 图像坐标点(imgpoints)
objpoints = []
imgpoints = []
images = glob.glob('calibration_images/*.jpg')
for fname in images:
img = cv2.imread(fname)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,corners=cv2.findChessboardCorners(gray,(9,6),None)
if ret==True:
objpoints.append(objp)
corners2=cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)
imgpoints.append(corners2)
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints,imgpoints,gray.shape[::-1],None,None)
print("camera matrix:\n",mtx)
print("\ndistortion coefficients:",dist.ravel())
```
此段程序会遍历名为`calibration_images`目录下的所有JPEG格式图片资源,尝试从中检测出标准尺寸(此处假设宽度方向有九个交界处间距均为25毫米) 的国际象棋棋盘样式特征点;一旦成功识别即保存对应的世界坐标系下三维向量形式的位置信息(`objpoints`) 及其映射后的二维投影平面内的实际成像坐标的集合(`imgpoints`). 最终通过调用`cv2.calibrateCamera()` 方法一次性返回四个重要结果变量——重投影误差(ret),摄像机内外部参数(mtx,dist,rvecs,tvecs).
值得注意的是,这里仅展示了基本原理层面的操作指导,而在真实应用场景里可能还需要考虑更多因素比如光照强度不均造成的阴影干扰等问题影响最终精度表现.
阅读全文
相关推荐


















