OpenCV双目立体视觉:读取与处理棋盘格角点

3星 · 超过75%的资源 需积分: 21 14 下载量 62 浏览量 更新于2024-07-23 收藏 490KB PPT 举报
"立体视觉OpenCV涉及的是计算机视觉领域中的一个重要技术,主要利用两台相机或一个设备的两个摄像头来获取场景的三维信息。OpenCV库提供了丰富的函数支持,包括读取图像、检测棋盘格角点等,以实现立体视觉应用。" 在OpenCV中,立体视觉通常涉及到双目视觉系统,即通过两个相机捕捉同一场景的不同视角图像,然后通过算法计算出图像像素对应的三维空间坐标。这需要理解图像处理、几何光学以及三角测量等基础知识。 1. 文件读取与图像路径管理: 在处理双目立体视觉时,通常需要读取多张图像,例如一对左右视图。文件列表可以使用`fopen`函数打开,以文本模式("rt")读取。读取的文件中应包含每对图像的路径,这些路径可以存储在一个二维向量`imageNames`中,其中`imageNames[0]`和`imageNames[1]`分别对应左视图和右视图的图像路径。 2. 棋盘格角点检测与绘制: `drawChessboardCorners`函数用于在图像上绘制检测到的棋盘格角点,它接受四个参数:目标图像、棋盘格大小、角点数组以及是否找到棋盘格的标志。目标图像必须是8位彩色图像,`patternSize`定义了棋盘格的行数和列数。`corners`参数是从`findChessboardCorners`函数获取的检测结果。如果未找到棋盘格,该函数会在图像上用红色圆点标记角点,或者在找到但不完整的情况下绘制角点之间的连线。 3. 棋盘格角点检测: `findChessboardCorners`函数用于在图像中自动寻找棋盘格的角点,其参数包括输入图像、棋盘格尺寸、输出的角点数组以及可选的标志`flags`。`flags`常设置为`CALIB_CB_ADAPTIVE_THRESH`和`CALIB_CB_NORMALIZE_IMAGE`,以适应不同光照条件并标准化图像。函数返回值表示是否成功找到了棋盘格的所有角点。 4. 立体匹配与三角测量: 在找到棋盘格角点后,可以使用OpenCV中的`stereoCalibrate`和`stereoRectify`等函数进行相机标定和校正,以消除视差和畸变。接着,可以使用` stereoMatch`函数找到对应像素间的匹配,最后利用三角测量原理计算出三维点坐标。 5. 应用场景: 立体视觉技术广泛应用于机器人导航、自动驾驶、3D重建、物体识别等领域。例如,它可以用于创建3D地图,实现避障功能,或者在制造业中进行精密零部件的检测和定位。 OpenCV库为立体视觉提供了一套完整的工具集,从图像预处理、特征检测到三维重建,涵盖了双目视觉系统的各个关键步骤。开发者可以根据具体需求,结合这些函数和算法实现各种复杂的计算机视觉应用。