opencv中标定函数

calibrateCamera

在 OpenCV 中,calibrateCamera 函数用于进行相机标定,估计相机的内参和外参。相机标定的目的是确定相机在三维空间中的位置和方向,以及其光学特性。

函数原型

double cv::calibrateCamera(
    const std::vector<std::vector<cv::Point3f>>& objectPoints,
    const std::vector<std::vector<cv::Point2f>>& imagePoints,
    cv::Size imageSize,
    cv::Mat& cameraMatrix,
    cv::Mat& distCoeffs,
    std::vector<cv::Mat>& rvecs,
    std::vector<cv::Mat>& tvecs,
    int flags = 0,
    cv::TermCriteria criteria = cv::TermCriteria(cv::TermCriteria::EPS + cv::TermCriteria::COUNT, 30, DBL_EPSILON)
);

参数说明

  1. objectPoints:

    • 三维空间中的点坐标,通常是一个三维标定板的点坐标,使用世界坐标系表示。每个图像的点集为一组。
  2. imagePoints:

    • 对应于图像中的点坐标,通常是通过特征检测(如角点检测)获得的。
  3. imageSize:

    • 图像的大小(宽度,高度),通常为 cv::Size(width, height)
  4. cameraMatrix:

    • 输出参数,表示相机内参矩阵。初始化时可以使用 cv::Mat::eye(3, 3, CV_64F)
  5. distCoeffs:

    • 输出参数,表示相机的畸变系数,通常为一个 5 或 8 元素的向量。
  6. rvecs:

    • 输出参数,表示每个图像的旋转向量,描述相机在世界坐标系中的方向。
  7. tvecs:

    • 输出参数,表示每个图像的平移向量,描述相机在世界坐标系中的位置。
  8. flags:

    • 可选参数,用于指定标定过程中的选项,例如是否使用初始估计。
  9. criteria:

    • 终止条件,用于控制迭代的停止条件。

返回值

  • 返回相机重投影误差,通常用于评估标定的准确性。

示例代码

下面是一个使用 calibrateCamera 的简单示例:

#include <opencv2/opencv.hpp>
#include <vector>
#include <iostream>

int main() {
   
    // 设定标定板的每个角点的三维坐标
    std::vector<std::vector<cv::Point3f>> objectPoints; // 3D点
    std::vector<std::vector<cv::Point2f>> imagePoints;  // 2D点

    // 假设我们有 10 张图像,每张图像都检测到角点
    for (int i = 0; i < 10; ++i) {
   
        std::vector<cv::Point3f> obj;
        for (int j = 0; j < 6; ++j) {
    // 6x9 的角点
            for (int k = 0; k < 9; ++k) {
   
                obj.emplace_back(k * 20.0f, j * 20.0f, 0.0f); // 每个点间隔 20 单位
            }
        }
        objectPoints
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ai智享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值