Subversion Repositories seema-scanner

Rev

Rev 121 | Rev 134 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 121 Rev 123
Line 28... Line 28...
28
            continue;
28
            continue;
29
 
29
 
30
        // Camera 0
30
        // Camera 0
31
        std::vector<cv::Point2f> qci0;
31
        std::vector<cv::Point2f> qci0;
32
        // Convert bayer to grayscale
32
        // Convert bayer to grayscale
33
        cv::Mat temp, gray;
33
        cv::Mat gray;
34
//        SMCalibrationSetI.frame0.convertTo(temp, CV_8UC1, 1.0/256.0);
34
//        SMCalibrationSetI.frame0.convertTo(temp, CV_8UC1, 1.0/256.0);
35
        cv::cvtColor(SMCalibrationSetI.frame0, gray, CV_BayerBG2GRAY);
35
        cv::cvtColor(SMCalibrationSetI.frame0, gray, CV_BayerBG2GRAY);
36
        // Extract checker corners
36
        // Extract checker corners
37
        bool success0 = cv::findChessboardCorners(gray, checkerCount, qci0, cv::CALIB_CB_ADAPTIVE_THRESH + cv::CALIB_CB_FAST_CHECK);
37
        bool success0 = cv::findChessboardCorners(gray, checkerCount, qci0, cv::CALIB_CB_ADAPTIVE_THRESH + cv::CALIB_CB_FAST_CHECK);
38
        if(success0){
38
        if(success0){
Line 99... Line 99...
99
    cal.frameWidth = calibrationData[0].frame0.cols;
99
    cal.frameWidth = calibrationData[0].frame0.cols;
100
    cal.frameHeight = calibrationData[0].frame0.rows;
100
    cal.frameHeight = calibrationData[0].frame0.rows;
101
    cv::Size frameSize(cal.frameWidth, cal.frameHeight);
101
    cv::Size frameSize(cal.frameWidth, cal.frameHeight);
102
 
102
 
103
    // determine only k1, k2 for lens distortion
103
    // determine only k1, k2 for lens distortion
104
    int flags = cv::CALIB_FIX_K3;
104
    int flags = cv::CALIB_FIX_ASPECT_RATIO + cv::CALIB_FIX_PRINCIPAL_POINT + cv::CALIB_FIX_K3;
105
    // Note: several of the output arguments below must be cv::Mat, otherwise segfault
105
    // Note: several of the output arguments below must be cv::Mat, otherwise segfault
106
    std::vector<cv::Mat> cam_rvecs0, cam_tvecs0;
106
    std::vector<cv::Mat> cam_rvecs0, cam_tvecs0;
107
    cal.cam0_error = cv::calibrateCamera(Q, qc0, frameSize, cal.K0, cal.k0, cam_rvecs0, cam_tvecs0, flags);
107
    cal.cam0_error = cv::calibrateCamera(Q, qc0, frameSize, cal.K0, cal.k0, cam_rvecs0, cam_tvecs0, flags);
108
 
108
 
109
//    // refine extrinsics for camera 0
109
//    // refine extrinsics for camera 0
Line 112... Line 112...
112
 
112
 
113
    std::vector<cv::Mat> cam_rvecs1, cam_tvecs1;
113
    std::vector<cv::Mat> cam_rvecs1, cam_tvecs1;
114
    cal.cam1_error = cv::calibrateCamera(Q, qc1, frameSize, cal.K1, cal.k1, cam_rvecs1, cam_tvecs1, flags);
114
    cal.cam1_error = cv::calibrateCamera(Q, qc1, frameSize, cal.K1, cal.k1, cam_rvecs1, cam_tvecs1, flags);
115
 
115
 
116
    // stereo calibration
116
    // stereo calibration
117
    int flags_stereo = cv::CALIB_FIX_K3;
117
    int flags_stereo = cv::CALIB_FIX_INTRINSIC;
118
    cv::Mat E, F, R1, T1;
118
    cv::Mat E, F, R1, T1;
119
    cal.stereo_error = cv::stereoCalibrate(Q, qc0, qc1, cal.K0, cal.k0, cal.K1, cal.k1,
119
    cal.stereo_error = cv::stereoCalibrate(Q, qc0, qc1, cal.K0, cal.k0, cal.K1, cal.k1,
120
                                              frameSize, R1, T1, E, F,
120
                                              frameSize, R1, T1, E, F,
121
                                              cv::TermCriteria(cv::TermCriteria::COUNT + cv::TermCriteria::EPS, 100, DBL_EPSILON),
121
                                              cv::TermCriteria(cv::TermCriteria::COUNT + cv::TermCriteria::EPS, 100, DBL_EPSILON),
122
                                              flags_stereo);
122
                                              flags_stereo);