官网单目相机标定操作流程(VS2017+opencv4.0.1)

OpenCV sample目录下自带两个与相机标定的cpp文件即:calibration.cpp和calibration_artificial.cpp
calibration.cpp 是通过用户输入可选参数进行摄像机标定的程序。
calibration_artificial.cpp 是程序模拟模拟摄像机标定的过程,即程序创建棋盘然后自主标定。

通常我们有两种方式去标定,一个是实时的从摄像机获取拍摄到的棋盘进行标定,一个是已经获得了一些棋盘的图片来标定。

本文详细介绍第二种,即用已获得的棋盘图片的整个过程。

方法一:编译生成 .exe文件,然后在commond 窗口输入参数执行

方法二:通过添加输入参数的代码,然后执行(可以单步调试)(推荐此方法)

一、alibration.cpp 和 calibration_artificial.cpp 位置如图所示。此外,棋盘图片也在同一目录下
官网单目相机标定操作流程(VS2017+opencv4.0.1)_第1张图片
二、找到文件后,开始新建工程吧。不过在用以获得的图像来进行标定,应先通过OpenCV自带的imagelist_creator.cpp 产生一个xml或者yaml格式的图像列表,然后在使用下面的程序。
第一步,新建项目demo(名称可以自己起),添加刚才那个目录下的imagelist_creator.cpp 编译执行得到可执行文件 demo.exe
官网单目相机标定操作流程(VS2017+opencv4.0.1)_第2张图片
官网单目相机标定操作流程(VS2017+opencv4.0.1)_第3张图片
第二步,执行demo.exe 产生一个xml或者yaml格式的图像列表
static void help(char** av)
{
cout << “\nThis creates a yaml or xml list of files from the command line args\n”
“usage:\n./” << av[0] << ” imagelist.yaml *.png\n”
<< “Try using different extensions.(e.g. yaml yml xml xml.gz etc…)\n”
<< “This will serialize this list of images or whatever with opencv’s FileStorage framework” << endl;
}

输入命令: demo imagelist.yaml left01.jpg left02.jpg left03.jpg left04.jpg left05.jpg left06.jpg left07.jpg left08.jpg left09.jpg left010.jpg left11.jpg left12.jpg left13.jpg left14.jpg right01.jpg right02.jpg right03.jpg right04.jpg right05.jpg right06.jpg right07.jpg right08.jpg right09.jpg right10.jpg right11.jpg right12.jpg right13.jpg right14.jpg
回车,生成imagelist.yaml
官网单目相机标定操作流程(VS2017+opencv4.0.1)_第4张图片
第三步,进行相机的标定
先把14张棋盘图片放到debug目录下,然后移除imagelist_creator.cpp 添加 calibration.cpp ,如图所示
官网单目相机标定操作流程(VS2017+opencv4.0.1)_第5张图片
编译执行,得到新的demo.exe ,进入cmd ,输入
demo -w=6 -h=9 -s=0.025 -o=camera.yml -op -oe imagelist.yaml (这条命令行在代码前边都有注释) 回车即可。如图所示,开始对每张图片进行角点检测
官网单目相机标定操作流程(VS2017+opencv4.0.1)_第6张图片
最后,得到一个 camera.yml (该文件名对应上一步命令行文件名)文件
至于照片数少了几张,是因为第十张照片报错,也许是拍摄质量不合格,故直接删除掉了。

官网单目相机标定操作流程(VS2017+opencv4.0.1)_第7张图片官网单目相机标定操作流程(VS2017+opencv4.0.1)_第8张图片
结果如下:
官网单目相机标定操作流程(VS2017+opencv4.0.1)_第9张图片
参考:https://blog.csdn.net/monk1992/article/details/82656033?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-2&spm=1001.2101.3001.4242

方法二:通过添加输入参数的代码,然后执行(可以单步调试)(推荐此方法)

第一步:将图片及imagelist放到 C:\Program Files\opencv\Workspace\demo\x64\Debug目录下

第二步: 添加代码

具体过程如图所示:
官网单目相机标定操作流程(VS2017+opencv4.0.1)_第10张图片
添加代码
argc = 6; argv[0] = “demo.exe”; argv[1] = “-w”; argv[2] = “6”; argv[3] = “-h”; argv[4] = “9”; argv[5] = “imagelist.yaml”;
官网单目相机标定操作流程(VS2017+opencv4.0.1)_第11张图片
得到的结果是相同的。

你可能感兴趣的:(calibration)