双目视觉嵌入式移植后校正矩阵的生成方法

首先要利用标定得到的参数,通过调用OpenCV中的函数来得到校正矩阵。

    double LM[] = {

     4.0178810502329486e+002, 0, 1.5950000000000000e+002,
     0,4.0178810502329486e+002,1.1950000000000000e+002,
     0,0, 1
     };
     double LD[] = {

    -4.5141575299933429e-001, 2.3998422552817714e-001,
     1.5081252615814692e-002, 1.8419337906291466e-003, 0
     };
     double RM[] = {

     4.0178810502329486e+002, 0, 1.5950000000000000e+002,0,
     4.0178810502329486e+002, 1.1950000000000000e+002,0,0, 1
     };
     double RD[] = {

     -5.1762688060193929e-001,6.3474560985437023e-001,
     -2.5303249541511292e-003, -2.7165709692779268e-003, 0
     };
     double Rotate[] = {

     9.9952858710662951e-001,1.4994693512808868e-002,
     2.6791094100126738e-002,-1.1568939379481839e-002,
     9.9224798371307799e-001,-1.2373398263599662e-001,
     -2.8438762249064085e-002, 1.2336570829767958e-001,
     9.9195369792039845e-001
     };
     double translation[] = {

     -8.8108837791674333e+001, -1.3412948452799096e+000,
     9.4102431499505457e+000
     };

cv::Mat    cameraMatrix_L = cv::Mat(3,3,CV_64FC1,LM);
    cv::Mat	distortionCoefficients_L = cv::Mat(1,5,CV_64FC1,LD);
    cv::Mat    cameraMatrix_R = cv::Mat(3,3,CV_64FC1,RM);
    cv::Mat	distortionCoefficients_R = cv::Mat(1,5,CV_64FC1,RD);

    cv::Mat rotations= cv::Mat(3,3,CV_64FC1,Rotate);
    cv::Mat translations= cv::Mat(3,1,CV_64FC1,translation);
    cv::Mat R1, R2, P1, P2, Q;
    cv::Rect roi1,roi2;
    cv::Mat m_Calib_Mat_Remap_X_L  = cv::Mat(imageSize, CV_32FC1);
    cv::Mat m_Calib_Mat_Remap_Y_L= cv::Mat(imageSize, CV_32FC1);
    cv::Mat m_Calib_Mat_Remap_X_R = cv::Mat(imageSize, CV_32FC1);
    cv::Mat m_Calib_Mat_Remap_Y_R = cv::Mat(imageSize, CV_32FC1);

    cv::stereoRectify(
         cameraMatrix_L,
         distortionCoefficients_L,
         cameraMatrix_R,
         distortionCoefficients_R,
         imageSize,
         rotations,
         translations,
         R1,R2,P1,P2,Q,
         1024
         );
    initUndistortRectifyMap(
         cameraMatrix_L,
         distortionCoefficients_L,
         R1,P1,
         imageSize,
         CV_16SC2,
         m_Calib_Mat_Remap_X_L, m_Calib_Mat_Remap_Y_L);
     initUndistortRectifyMap(
         cameraMatrix_R,
         distortionCoefficients_R,
         R2, P2,
         imageSize,
         CV_16SC2,
         m_Calib_Mat_Remap_X_R,m_Calib_Mat_Remap_Y_R);

嵌入式运行后可以得到相关校正参数。

时间: 2024-10-14 05:18:33

双目视觉嵌入式移植后校正矩阵的生成方法的相关文章

双目视觉嵌入式移植校正图像所遇到的问题

校正参数的生成方法以前面已经介绍: http://blog.csdn.net/b5w2p0/article/details/39099177 采用OpenCV中校正函数进行Remap校正, cv::Mat frame0, frame1, img0, img1; frame0 = imread("1_3.bmp"); frame1 = imread("1_4.bmp"); remap(frame0, frame0, m_Calib_Mat_Remap_X_L, m_C

OpenCV嵌入式移植后XML读取问题及解决

1.OPENCV在进行嵌入式移植后需要读取XML文件. 一开始利用最常用程序读取: cv::FileStorage fs(xml_filename, cv::FileStorage::READ); if ( !fs.isOpened() ) { } fs["QMatrix"] >> m_Calib_Mat_Q; fs["remapX1"] >> m_Calib_Mat_Remap_X_L; fs["remapY1"] &g

双目视觉嵌入式移植成功

在以前双目视觉移植出现了问题: http://blog.csdn.net/b5w2p0/article/details/39101499 是右相机校正图像出现的问题,左相机没有问题. 想了以下办法想尝试解决: 1.相机硬件调整,高低,根据图像 2.应用不同的cvStereoVision或cv::stereovision,就是C接口和C++接口的校正及Remap函数. 3.应用另一种校正方法:http://blog.sina.com.cn/s/blog_4298002e01013yb8.html这

双目视觉的嵌入式移植遇到问题了,两个摄像头不能同时打开

1.用V4L实现了单个图像在QT上的采集与显示.同时移植到我的嵌入式开发板上,也是可以实现图像的采集与显示. 2.因项目需要要同时打开两个摄像头,同样的程序,打开两个摄像头在电脑上是可以运行的,可以同时打开. 可编译到开发板上就出现了这样的错误: uvcvideo: Failed to submit URB 0 (-28). 查找了好久也没有解决的办法,卡到这里了. 双目视觉的嵌入式移植遇到问题了,两个摄像头不能同时打开

嵌入式移植docker报错问题汇总

经过了漫长时间的移植和查询资料,得以解决一下嵌入式docker出现的问题,很多网上的资料全都是复制粘贴复制粘贴,找不到合适的解决方法让人很是苦恼,希望自己总结出的一些解决问题的经验给广大朋友减少一些负担吧! 1.standard文件找不到:解决方法: tar zcvf xtables /usr/lib64/xtables cp xtables.tar /work/initramfs/ 需要到同内核同系统的另一台服务器打包在解压 2.需要iptables支持才能启动docker,移植iptable

数学-线性代数导论-#11 基于矩阵A生成的空间:列空间、行空间、零空间、左零空间

线性代数导论-#11 基于矩阵A生成的空间:列空间.行空间.零空间.左零空间 本节课介绍和进一步总结了如何求出基于一个m*n矩阵A生成的四种常见空间的维数和基: 列空间C(A),dim C(A) = r,基 = { U中主元列对应的原列向量 }: 行空间C(AT), dim C(AT) = r,基 = { U中的主元行 }: 1.为什么行空间不表示为R(A)而表示为C(AT)? 因为转置是矩阵的行与列之间的桥梁. 既然我们已经研究过列空间,通过转置,我们可以将行空间视为转置矩阵的列空间. 2.行

Ubuntu Server 14.04 选择中文安装后日期乱码的解决方法

Ubuntu Server 14.04选择中文安装后,默认的/etc/default/locale会使某些中文日期乱码,执行ll和date可见. /etc/default/locale 原来内容为: LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh" LC_NUMERIC="zh_CN" LC_TIME="zh_CN" LC_MONETARY="zh_CN" LC_PAPER=&q

Apache SSL CSR OpenSSL生成方法

注册申请SSL证书时,很多都是需先提供CSR(证书签名请求文件),下面介绍一下Apache生成方法.首先SSH登陆服务器,先搭建好Apache等环境,也需要运行yum install mod_ssl安装SSL模块,然后/etc/init.d/httpd restart重启一下Apache服务. 执行以下命令安装OpenSSL: yum install openssl 接着生成KEY和CSR文件: openssl req -new -nodes -newkey rsa:2048 -keyout s

UIImage类方法总结及UIImage生成方法对比

1.UIImage 生成方法的对比 Apple官方的文档为生成一个UIImage对象提供了两种方法: 1. imageNamed,其参数为图片的名字:优点:加载时会缓存图片,用于图片的频繁使用:缺点:占用内存 2. imageWithContentsOfFile,其参数也是图片文件的路径.优点:仅加载图片,不会缓存,用于价值次数较少的情况,降低内存消耗 那么两种有什么区别吗? 肯定是有的.根据Apple的官方文档: imageNamed: 这个方法用一个指定的名字在系统缓存中查找并返回一个图片对