AR--摄像机标定

本文详细介绍了如何使用OpenCV进行摄像机标定,包括读取初始参数、寻找棋盘格角点、计算校正系数等步骤。通过OpenCV例程提供的程序,可以进行单目相机标定,并分析了每个步骤的关键函数和参数。最终,计算得到的校正系数可用于AR应用中调整相机参数。

使用OpenCV进行摄像机标定,在OpenCV例程中有程序可以实现,
/samples/cpp/tutorial_code/calib3d/camera_calibration里的程序就可以进行单目相机标定。
http://download.youkuaiyun.com/detail/chuhang_zhqr/9293665有我上传的,内含测试图片和文件,想直接用的就去下载吧。
接下来分析下摄像机标定的过程:
1:这个程序中把初始化参数放在了一个文件(in_VID5.xml)中,在程序的开始首先读入文件中的参数:

const string inputSettingsFile = argc > 1 ? argv[1] : "in_VID5.xml";
    FileStorage fs(inputSettingsFile, FileStorage::READ); // Read the settings
    if (!fs.isOpened())
    {
        cout << "Could not open the configuration file: \"" << inputSettingsFile << "\"" << endl;
        return -1;
    }
    fs["Settings"] >> s;
    fs.release();                                         // close Settings file

    if (!s.goodInput)
    {
        cout << "Invalid input detected. Application stopping. " << endl;
        return -1;
    }

这个in_VID5.xml可以设置图像大小,棋盘格大小,还可以设置图像源输入:相机输入(“0”),视频输入,图像序列输入(“/home/zhu/program_c/opencv_study/test_down/camera_calibration/VID5.xml”),相机输入时,在运行程序时,按g开始采集图像并进行计算标定系数,期间可以移动棋盘格或相机,获得不同方位的棋盘格图像,使标定系数尽可能精确。

2:读入相机初始参数后,判断这些数据是否符合,就是验证数据的正确性。

void interprate()
    {
        goodInput = true;
        if (boardSize.width <= 0 || boardSize.height <= 0)
        {
            cerr << "Invalid Board size: " << boardSize.width << " " << boardSize.height << endl;
            goodInput = false;
        }
        if (squareSize <= 10e-6)
        {
            cerr << "Invalid square size " << squareSize << endl;
            goodInput = false;
        }
        if (nrFrames <= 0)
        {
            cerr << "Invalid numb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值