张正友相机标定Opencv实现(带棋盘格打印PDF和测试图片)
项目简介
本项目提供了一个完整的张正友相机标定实现,使用OpenCV库在C++环境下完成。项目包含了棋盘格打印的PDF文件以及10张手机相机拍摄的标定图和20张摄像头拍摄的标定图。此外,还提供了一个完整的VS2015工程代码,代码中包含了详细的注释说明,方便用户理解和使用。
功能特点
- 一键运行:项目提供了一个完整的VS2015工程,用户只需一键运行即可完成相机标定。
- 详细注释:代码中包含了详细的注释,帮助用户理解每一步的操作和实现原理。
- 多种标定图:项目提供了10张手机相机拍摄的标定图和20张摄像头拍摄的标定图,方便用户进行不同场景下的标定测试。
- 标定结果输出:标定完成后,程序会输出相机的内参、外参、旋转和平移矩阵,并进行标定效果评价。
- 图像矫正:使用标定结果对原始棋盘图进行矫正,展示标定效果。
- 与Matlab对比:标定结果与Matlab的标定结果非常接近,验证了实现的准确性。
文件结构
- Chessboard.pdf:棋盘格打印文件,用于打印棋盘格进行标定。
- CalibrationImages/:包含10张手机相机拍摄的标定图和20张摄像头拍摄的标定图。
- VS2015Project/:VS2015工程文件夹,包含完整的C++代码和项目配置文件。
使用说明
- 打印棋盘格:使用提供的
Chessboard.pdf
文件打印棋盘格。 - 拍摄标定图:使用手机相机或摄像头拍摄标定图,建议拍摄不同角度和距离的图片以提高标定精度。
- 导入图片:将拍摄的标定图放入
CalibrationImages/
文件夹中。 - 运行代码:打开VS2015工程,编译并运行代码。程序会自动读取标定图并进行标定。
- 查看结果:标定完成后,程序会输出相机的内参、外参、旋转和平移矩阵,并展示标定效果。
依赖库
- OpenCV 3.x 或更高版本
- Visual Studio 2015 或更高版本
参考文献
- Zhang, Zhengyou. “A flexible new technique for camera calibration.” IEEE Transactions on Pattern Analysis and Machine Intelligence 22.11 (2000): 1330-1334.
贡献
欢迎大家提出问题和建议,或者提交Pull Request进行代码改进。
许可证
本项目采用MIT许可证,详情请参阅LICENSE
文件。