一、使用opencv采集双目图像

1.准备标准棋盘并打印

这里我们使用OpenCV提供的sample程序中的标定图片,图片位于opencv(C++版本)的安装路径:opencv\sources\samples\data下。使用打印机打印图片,注意不要选择适应边框,直接原大小打印,这样每一个小方格子的边长就是26mm(实际测量)。

2.摄像头采集双目图像并且保存

标定图片需要使用标定板在不同位置、不同角度、不同姿态下拍摄,以10~20张为宜。标定板需要是黑白相间的矩形构成的棋盘图,制作精度要求较高。下面代码是使用opencv读取双目照片,进行分割之后将左右相机的的照片分别保存道相应的文件夹下。用户在使用的时候只需要修改文件夹放置的位置即可。按C键采集一次图片。

#include <unistd.h>
#include <iostream>
#include <opencv2/opencv.hpp>
#include <fstream>
#include <cstdio>using namespace cv;
using namespace std;#define WIDTH 2560
#define HEIGHT 720
int main()
{char c = 0;VideoCapture capture(0);Mat cam;int i = 0;if (!capture.isOpened()){cout<<"can not open the camera"<<endl; cin.get(); exit(1);}capture.set(CAP_PROP_FRAME_WIDTH, WIDTH);capture.set(CAP_PROP_FRAME_HEIGHT, HEIGHT);string pathNameLeft = "/media/nvidia/34EE-34E53/SavedImages/Left/Left";string pathNameRight = "/media/nvidia/34EE-34E53/SavedImages/Right/Right";string formatName = ".jpg";string num;string fileNameL;string fileNameR;while (capture.read(cam))   //循环读取摄像画面帧capture >> cam{int w, h ;w= cam.cols;  //获取相机画面宽高h= cam.rows;      imshow("cam",cam);        Rect rect0(0, 0, w/2, h); //(x,y,width,height)定义矩形框截取Mat caml = cam(rect0); //截取左摄像头画面Rect rect1(w/2, 0, w/2, h);Mat camr = cam(rect1); //截取右半边c = waitKey(10);if(c == 'c') //按c键采集图像{num = to_string(i);fileNameL = pathNameLeft + num + formatName;fileNameR = pathNameRight + num + formatName;imwrite(fileNameL, caml);imwrite(fileNameR, camr);++i;cout<<"capture ok!"<<endl; //每次截取成功打印一次,图片保存在工程的编译目录下}c = waitKey(10);if (c == 'q')//按q键退出 ,27为Esc键{break;}}return 0;}

二、使用matlab2018标定相机参数

1.内参

IntrinsicMatrix对应内参,注意这个和OpenCV中是转置的关系,注意不要搞错。

2.畸变参数

RadialDistortion:径向畸变,摄像头由于光学透镜的特性使得成像存在着径向畸变,可由K1,K2,K3确定。

NOTE:

  • matlab选择3 Coefficients,则是K1,K2,K3三个参数非线性拟合;畸变不严重的情况下可以选择2 Coefficients,这样径向畸变就由K1,K2确定,K3为0。
  • 对于畸变较小的图像中心区域,主要是k1起作用;对于畸变较大的边缘区域主要是k2起作用。普通相机这两个系数就够用了,对于鱼眼相机这种畸变特别大的才用的上第三个参数k3

TangentialDistortion:切向畸变,由于装配方面的误差,传感器与光学镜头之间并非完全平行,因此成像存在切向畸变,可由两个参数P1,P2确定。

opencv使用时,需要注意参数的排放顺序,即K1K2P1P2K3。千万不要以为k是连着的。

ref:

https://blog.csdn.net/ktigerhero3/article/details/83039964

https://blog.csdn.net/moonshapedpool/article/details/83105526

https://blog.csdn.net/yanli33/article/details/60478023

https://blog.csdn.net/Loser__Wang/article/details/51811347

http://www.cnblogs.com/chay/p/7551151.html

https://www.cnblogs.com/voyagee/p/7524946.html

双目相机标定流程(使用opencv采集图像、使用matlab标定相机参数)相关推荐

  1. ubuntu下安装大恒相机驱动并调用程序采集图像

    一.ubuntu下安装大恒相机驱动 1.大恒GigE摄像头Ubuntu环境下的配置 大恒GigE摄像头Ubuntu环境下的配置 - Tzbubble - 博客园 2.官方的Linux版SDK常见问题解 ...

  2. Basler工业相机基于opencv 采集图像

    本实验在两个博客的基础上实现的,首先是配置opencv http://blog.csdn.net/lili2425960/article/details/54234299 先前查了一些关于win10+ ...

  3. 张正友标定Opencv实现、标定流程以及图像坐标转为世界坐标

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xiaomifanhxx/article/details/79560693 使用相机以前,首先要进行相 ...

  4. 海康工业相机常用参数修改以及使用OpenCV-Python采集图像

    海康工业相机常用参数修改以及使用OpenCV-Python采集图像 一.调节相机参数 1.调节曝光时间 2.修改图像尺寸和像素格式 3.保存参数 二.Python采集成opencv可识别格式,并用op ...

  5. 张正友相机标定Opencv实现以及标定流程标定结果评价图像矫正流程解析(附标定程序和棋盘图)

    from:https://blog.csdn.net/dcrmg/article/details/52939318 使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么 ...

  6. 要matlab标定数据做双目相机矫正OpenCV C++

    双目相机矫正 系列文章来了,C/CPP实现双目矫正(不使用OpenCV)及矫正源码解析正在更新中. 开始本文内容 标定步骤: matlab标定较为准确,命令行中输入stereoCameraCalibr ...

  7. 相机标定 matlab opencv ROS三种方法标定步骤(2)

    二  ubuntu下Opencv的相机标定 一般直接用Opencv的源码就可以进行相机的标定,但是可能只是会实现结果,却不懂实现的过程,我也是模模糊糊的看了<计算机视觉中的多视图几何>以及 ...

  8. python绘制黑白棋盘_生成黑白棋盘标定图和单目相机标定(python+opencv实现)

    学习记录. 事实上很早就接触过视觉定位这东西,但是到现在才返回头学习一下相机的标定,真是可耻啊!我把想法和过程记录一下. 相机成像 相机的成像原理--小孔成像 然而,在实际由于设计工艺问题.相机安装环 ...

  9. 双目立体视觉源代码 双目立体视觉匹配程序 双目视觉3d成像(三维重构图像处理) 基于双目视觉的深度计算和三维重建 opencv写的双目视觉摄像机标定和三维重建代码

    双目视觉/双目标定源码/图片集标定匹配三维重建坐标计算OpenCV 1.双目立体视觉源代码(包括标定,匹配,三维重建) 2.双目视觉实验图片集(双目立体视觉中使用的标准实验图,适合初学者进 行实验使用 ...

最新文章

  1. C#forUnity快速入门(连载2)-C#语言入门
  2. 增大mysql修改表空间_Oracle修改表空间为自动扩展
  3. sql两个列值以下划线拼接得到一个新的列_面试必备sql知识点——MySQL基础
  4. 二分+01分数规划+最大化平均值 Dropping tests POJ - 2976
  5. 多串口服务器的工作方式及接线示意图介绍
  6. nodejs实践录:开篇
  7. CSDN 勤写标兵勋章 颁发规则
  8. 腾讯开源物联网操作系统 TencentOS tiny,最小体积 1.8KB!
  9. CISA已遭利用漏洞列表新增15个漏洞
  10. [原创]spring及springmvc精简版--继承数据源,声明式事物
  11. 词法分析器代码分析报告
  12. html 时间控件滚动选择器,TimePicker
  13. go 时间的操作(比较,增加)
  14. Godaddy Web Hosting http 重定向至 https协议
  15. 我的世界服务器扔东西显示垃圾箱,我的世界:MC里6个隐藏的垃圾桶,第一个可回收,第二个很常见?...
  16. Vue3实现中英文切换
  17. error: fatal error: no input files
  18. [创业-29]:雪崩与狗,创业者真实写照
  19. 返璞归真-删除文件默认打开方式
  20. OpenCms 带分页的新闻列表

热门文章

  1. 《物联网医用内窥镜监控平台》IOS前端
  2. 互联网思维“独孤九剑”:传统企业互联网化的心法
  3. Selective Cross-City Transfer Learning for Traffic Prediction via Source City Region Re-Weighting笔记
  4. 支付宝集成过程详解-android
  5. uniapp取消网络请求
  6. 插件化的原理分析及实现
  7. PPT作品分享——新能源汽车市场战火纷飞,群雄逐鹿,谁主沉浮 — 双积分解读
  8. Python学习——UnitTest自动化测试框架
  9. 【CSS3】媒体查询,选择器,outline,font-face,resize,svg
  10. 牛逼!JetBrains 又出了一款编程神器!协同编程!