【问题标题】:OpenCV Projectpoints makes wrong Z axis (calibrated with chessboard)OpenCV Projectpoints 使 Z 轴错误(用棋盘校准)
【发布时间】:2016-05-07 20:29:34
【问题描述】:

我想校准我的相机并绘制 xyz 轴。 (如此链接所示:http://docs.opencv.org/3.1.0/d7/d53/tutorial_py_pose.html)

不幸的是,我的校准出现了一些奇怪的问题,我似乎无法修复它。我制作了一个 cad 模型以尽量减少其他可能的错误...

所以基本上,我做了两个步骤:

  1. 校准每个摄像头
  2. 使用投影点绘制线条

不知道哪里出错了……

cameraCalibration 中的变量。 imagepoints中的点由棋盘找到。

vector< vector<cv::Point2f> > imagePoints;
vector< vector< cv::Point3f> > objectPoints;

vector<cv::Mat> rvecs, tvecs;
cv::Mat intrinsic_Matrix, distortion_coeffs;

查找点的代码

cv::Point2f clsCameraControl::FindSpecific(cv::Point3f o3Dpoint)
{
    cv::Mat  rvec, tvec;
    rvec.create(1, 3, cv::DataType<double>::type);
    tvec.create(1, 3, cv::DataType<double>::type);
    rvec = rvecs[0].clone(); 
    tvec = tvecs[0].clone();

    cv::solvePnP(objectPoints[0], imagePoints[0], intrinsic_Matrix, distortion_coeffs, rvec, tvec);

    vector<cv::Point3f> Input1;
    vector <cv::Point2f> Output1;
    Input1.insert(Input1.end(), o3Dpoint);
    Output1.clear();
    cv::projectPoints(Input1, rvec, tvec, intrinsic_Matrix, distortion_coeffs, Output1);

    return Output1[0];
 }

This image represents the four results i got(绘制 X(绿色)、Y(红色)和 Z(蓝色)轴)

Z 轴总是错的。它应该只是向上(或者至少在同一个方向上都错了)

我使用的基础图片是in this album,如果你想自己尝试一下(我自己制作的,大家可以免费使用!)

有人知道为什么以及如何解决这个问题吗?

【问题讨论】:

    标签: c++ opencv computer-vision camera-calibration


    【解决方案1】:

    对于遇到此问题的任何人:多拍些照片...

    【讨论】:

    • 你的意思是在棋盘校准期间?你用了多少张图片?
    • 我没有为每台相机使用一张图片进行校准,而是每台相机使用了大约 60 张图片。每张图片的棋盘在不同的位置,这样open cv中的标定算法可以更准确地计算内在参数、畸变参数以及旋转和平移向量。
    • @fivezero05 在我的情况下,Z 轴总是以一个好的起点平移(就像你的情况一样),但另一端落在 (-10,-2​​) 或类似的地方,导致a 在整个图片中带有一条蓝色对角线。你认为这可能是校准吗?您是如何使用多个板实现校准的?你只是迭代相同的矩阵变量吗?
    猜你喜欢
    • 2019-07-29
    • 2016-10-22
    • 2016-09-15
    • 2014-10-03
    • 2012-04-20
    • 1970-01-01
    • 2013-03-03
    • 2018-02-24
    • 1970-01-01
    相关资源
    最近更新 更多