OpenCV Projectpoints产生错误的Z轴(用棋盘校准)

时间:2016-05-07 20:29:34

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

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

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

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

  1. 校准每个相机
  2. 使用项目点绘制线条
  3. 我不知道哪里出错......

    来自cameraCalibration的变量。来自图像点的点由棋盘找到。

    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,如果您想亲自尝试一下(我自己制作的图片可供所有人免费使用!)

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

1 个答案:

答案 0 :(得分:0)

对于有此问题的人:拍更多照片......