当前位置:网站首页>OpenCV相机标定完全指南(有手就行)
OpenCV相机标定完全指南(有手就行)
2022-08-09 03:34:00 【HNU跃鹿战队】
--Neozng[[email protected]]
此教程将会教会你如何使用opencv提供的例程进行相机的标定,并且是利用相机拍摄的视频进行实时标定.若是提前拍摄照片然后利用照片标定,需要自行阅读官方的教程,并in_VID5.xml中的注释进行修改.
首先你需要安装opencv,教程戳这里:全网最详细的各种opencv安装教程
若是从源码编译安装完opencv后,以C++为例,进入你编译opencv的文件夹,将sample->cpp->example_cmake下的CMakeLists.txt拷贝到sample->cpp(python)->tutorial_code->calib3d->camera_calibration 。
若你是直接从源仓库安装预编译版本,或是用openvino自带的opencv,笔者这里也有一套可以直接使用的源代码,戳这里下载:链接稍候补充

拷贝此CMakeLists.txt

打开CMakeLists.txt,修改add_exacutable()处的example.cpp为camera_calibration.cpp:

随后你需要打印一个标定板,这篇教程会教你如何DIY标定板的参数:create calibration pattern
接下来根据你的标定板样式,对in_VID5.xml进行设置,如果你是一个新手,你只需要关注以下几个参数:

- 第一个是标定板的长度和宽度,对于CIRCLE_GRID,横纵向分别有几个圆,Width和Height就分别是多少,特别注意,对于棋盘格,此参数代表的是角点个数而不是格子个数.
- 第二个是尺度大小,如果你的标定板参数是自己设定的,要把此参数设定成和你生成的标定板一模一样,否则导致参数异常.
- 第三个是标定板类型,你生成了什么类型的标定板,就用选对应的类型,注释中有对应的参数,复制下来替换就ok.(CIRCLE_GRID,ASYMMETRIC_CIRCLE,CHESSBOARD)
- 第四个是标定数据来源,我们稍后将使用相机的实时拍摄视频进行标定,将此参数改为已经连接的相机的id(一般为0).若你希望用照片进行标定,则将此参数设为照片路径合集,即当前文件夹下的VID5.xml,并且你需要将用于标定的照片的路径全部放入VID5.xml中;用视频则直接填入视频的路径)。
- 第五个是用于标定的图片总数,一般来说拍摄的角度越多||不同距离的照片越多得到的标定结果越准确.
- 最后一个是输出的相机内参文件名.
修改好之后保存即可,马上在当前文件夹打开一个终端
cmake . # 生成makefile make # 编译 ./opencv_example in_VID5.xml #执行程序
此时将会打开相机,显示其拍摄的画面,将相机对准标定板,会有负片的效果(反色),说明找到了标定板.在此界面上按下g开始标定,当右下角的计数达到你设置的数量时标定结束,终端中会输出此次标定的结果,根据重投影误差和显示画面的畸变程度我们可以判断标定的效果.

标定进行中(图片待补充)
边栏推荐
- 给一时兴起想要学习 “ 测试 ” 的同学的几条建议.....
- 荣耀路由(WS831)做无线中继时LAN网段与WAN网段冲突解决方法
- SIP协议栈学习之开始篇
- leetcode 2021春季挑战赛 1. 采购方案
- Day021 Book management system (objects and arrays)
- Embedded system driver advanced [3] - __ID matching and device tree matching under platform bus driver development
- 浅聊一下那些营销工具—优惠券
- MutationObserver接口(一) 基本用法
- 一本通1258——数字金字塔(动态规划)
- 发明时代,「幂集创新」事关你我
猜你喜欢

Leetcode刷题——148. 排序链表

A separate machine is connected to the spark cluster of cdh, and the task is submitted remotely (absolutely successful, I have tested it n times)

智能计数器控制板的功能及应用有哪些?

3年半测试经验,20K我都没有,看来是时候跳槽了...

C18-PEG- ALD批发_C18-PEG-CHO_C18-PEG-醛基

H264之sps解析分辨率

JS ES5也可以创建常量?

进程和计划任务管理

driftingblues靶机wp

《剑指offer》题解——week1(持续更新)
随机推荐
新型双功能螯合剂NOTA及其衍生物CAS号:147597-66-8p-SCN-Bn-NOTA
Matlab optimization method -- 0.618 method
卷积神经网络模型训练——入门理解
SQL注入(3)
发明时代,「幂集创新」事关你我
Redis expiration strategy and elimination strategy
leetcode 1805. 字符串中不同整数的数目
卷积神经网络的推导过程
MATLAB | 比生命游戏更自由的生命游戏
07 类与对象(一)
PhotoShop软件笔记
技术分享 | 使用 cURL 发送请求
Cyanine5tetrazine(CAS号:1427705-31-4)结构式原理
06 Dynamic memory
了解CV和RoboMaster视觉组(五)运动建模与预测
2022-08-08 The fifth group Gu Xiangquan study notes day31-collection-junit unit test
If A, B, C, and D process parts, the total number of processed parts is 370. If the number of parts processed by A is 10 more, if the number of parts processed by B is 20 less, if the number of parts
SIP协议栈学习之开始篇
Day021 Book management system (objects and arrays)
static成员及代码块