参考博客:
https://blog.csdn.net/little_baby2/article/details/90680689
https://blog.csdn.net/mars_xiaolei/article/details/88845836
环境
OpenCV版本:OpenCV4.2.0
VS版本:VS2017
操作系统:Windows10
标定过程
1.拍摄标定照片。选择棋盘格进行标定
2.生成照片列表
新建项目添加现有项,打开opencv库在目录opencv\sources\samples\cpp中找到文件imagelist_creator.cpp,编译运行代码,在Debug文件中找到可执行文件.exe,
同时按WIN+R,输入cmd,打开命令行界面,进入exe所在的目录,输入以下命令,将图像文件名写入yaml文件中,系统会在exe所在的目录下自动生成imagelist.yaml文件。
biaoding.exe imagelist.yaml b_image1.jpg b_image2.jpg b_image3.jpg b_image4.jpg b_image5.jpg
执行后在该路径下生成imagelist.yaml,文件,用记事本打开补全所有图片。
2.开始进行相机标定。打开VIsual Studio 2017,新建项目添加现有项,在路径opencv\sources\samples\cpp中找到calibration.cpp,直接编译运行可能会报错“This function or variable may be unsafe”,按照https://jingyan.baidu.com/article/49711c616b8a1ffa441b7cdc.html解决问题,编译运行,得到可执行文件。
把imagelist.yaml和棋盘格图片跟可执行文件exe放在一起,同时按WIN+R,输入cmd,打开命令行界面,进入exe所在的目录,输入以下命令,开始检测棋盘格的交点,系统会自动生成out_camera_data.yml存储着相机标定参数。
biangding_result.exe -w=8 -h=5 -pt=chessboard -s=0.010 -o=out_camera_data.yml -op -oe imagelist.yaml
注意:w、h为角点个数,而非棋盘格个数,如下图w=8,h=5。
out_camera_data.yml中的结果,如图,完成标定。