原创

使用matlab得到校正相机以及如何在opencv里使用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://ailearning.blog.csdn.net/article/details/86170246

因为想i标定对于一款相机来说只需要标定一次即可,小编这里采取的是matlab app傻瓜式标定方法,非常简单。
1、打开matlab,如图中红色线条圈出的地方,此处使用matlab2016b:
在这里插入图片描述
2.打开存放照片的文件夹,全部选中,导入图片
在这里插入图片描述
3.此处填写标定板方块边长,是指棋盘格每个小格的实际距离
在这里插入图片描述
4、然后点击上方的Calibrate,处理完后点击Export Camera Parameters(就是绿色对勾)就可以导出数据,可以在matlab的工作区看见,右侧标出的是以后主要用到的数据:
在这里插入图片描述
这里对matlab得到的结果进行一个简要的说明:
畸变矩阵:
{k1 k2 p1 p2 k3 }
matlab中 RadialDistortion 是k1 k2 k3, TangentialDistortion是p1 p2
内参矩阵:
ans =

955.8925(fx) 0 0
0 955.4439(fy) 0
296.9006(cx) 215.9074(cy) 1.0000

opencv里需要用到内参矩阵和畸变矩阵使用示例:

double fx,fy,cx,cy,k1,k2,k3,p1,p2;
    fx=955.8925;
    fy=955.4439;
    cx=296.9006;
    cy=215.9074;
    k1=-0.1523;
    k2=0.7722;
    k3=0;
    p1=0;
    p2=0;
    Mat cameraMatrix = (cv::Mat_<float>(3, 3) <<
        fx, 0.0, cx,
        0.0, fy, cy,
        0.0, 0.0, 1.0);
   //    std::cout << cameraMatrix << std::endl;
   Mat distCoeffs = (cv::Mat_<float>(5, 1) <<
        k1, k2, p1, p2, k3);
     //  std::cout << distCoeffs << std::endl;
文章最后发布于: 2019-01-09 18:43:04
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览