【入门】OpenCV2单目相机标定 采用官方例程

【入门】OpenCV2单目相机标定 采用官方例程

课程设计要采用相机标定。瞎搞了几天,在查找各方资料的帮助下,开始入门。
首先多谢这篇参考资料【http://www.xuebuyuan.com/1586576.html】,才让我入门。写篇博客当作学习笔记吧。

这教程的目标是学习怎样通过一系列棋盘图片进行相机标定。

1.打开【opencv\sources\samples\cpp】文件夹并将用到imagelist_creator.cppcalibration.cpp文件
2.使用imagelist_creator 来创建一个包含你的目标标定照片列表的 XML/YAML 文件
3.运行 calibration 例程来进行摄像机标定.

OpenCV sample目录下自带相机标定的cpp文件即:calibration.cpp 它是通过用户输入可选参数进行摄像机标定的程序。

一般情况下,我们有两种方法去标:
(1)采用摄像机实时拍摄地棋盘格图片进行定
(2)采用已获得的一些棋盘格图片进行标定(*本文采用的方法

方法1】编译生成(用于创建包含标定照片列表的).exe文件,然后在命令提示符(cmd)窗口输入参数进行标;

方法2】通过在:calibration.cpp主函数添加输入的参数代码,然后执行(可单步调试)(推荐此方法)【此方法可参考这位博主博客的二次补充部分:opencv单目相机标定 自带例子程序的使用

以下是本文的详细标定过:
文件imagelist_creator.cppcalibration.cpp 位置在 opencv 安装目录下的 samples/cpp 文件夹内。标定的棋盘格图片也在同一目录下。如图所示

这里写图片描述

标定的棋盘图

这里写图片描述

找到文件后,开始新建工程(空项目)吧。用已获得的图像来进行标定,应先通过OpenCV自带的imagelist_creator.cpp 产生一个xml或者yaml格式的图像列表,然后接着使用下面的程序。
第一步
新建项目 cam_calib(命名随意),添加 imagelist_creator.cpp 到源文件,编译执行得到在 cam_calib/Debug 目录下的可执行文件 cam_calib.exe
这里写图片描述

可执行文件路径

第二步:
在可执行程序的目录下,按住shift键,选择鼠标右键菜单中的【在此处打开命令窗口】。进入cmd窗口键入【cam_calib.exe】 回车,运行 exe 文件,生成一个 xml 或者 yaml 格式文件。

根据其输出的信息usage显示,键入:【 cam_calib.exe 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 】 回车执行

可在当前目录下,生成一个 imagelist.yaml 文件
这里写图片描述
这里写图片描述

第三步:
载入图片,进行相机标定。复制图片到 【cam_calib/Debug】 目录下。(这里仅复制了 left01~014 共14张图片。有兴趣可标定 right01~014 的图片)

在 【cam_calib 项目】中移除 imagelist_creator.cpp文件 ,导入 【已有项】 calibration.cpp 文件。

这里写图片描述

重新编译【cam_calib 项目】获得新的【cam_calib.exe】,同样的做法进入 cmd 窗口,执行程序;

根据 cmd 窗口给出的 usage 信息 ,再输入 【 cam_calib -w 6 -h 9 imagelist.yaml 】回车。开始对输入图片进行标定。
(其中这里的6和9,分别代表的是读取图片中棋盘格不同方向上的角点数)
这里写图片描述

输入参数代码后,结果如下。

这里写图片描述

最后,再工程目录下会生成一个 【out_camera_data.yml】文件。

![这里写图片描述](https://img-blog.csdn.net/20170222210313164?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl0dGxlX2NhdDEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 

 文件内容如下:
%YAML:1.0
calibration_time: "02/22/17 20:12:09"
image_width: 640
image_height: 480
board_width: 6
board_height: 9
square_size: 1.
flags: 0
camera_matrix: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [ 5.3765976500165073e+002, 0., 3.4011155767874686e+002, 0.,
       5.3789341813113867e+002, 2.3694081464807104e+002, 0., 0., 1. ]
distortion_coefficients: !!opencv-matrix
   rows: 5
   cols: 1
   dt: d
   data: [ -2.7762353155161251e-001, 5.3976467600878486e-002,
       2.1257384355991209e-003, -3.9487502777272009e-004,
       4.8679847473271927e-002 ]
       avg_reprojection_error: 4.4034956116049290e-001

至此,标定结束。

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值