diff --git a/components/rgbd-sources/src/calibrate.cpp b/components/rgbd-sources/src/calibrate.cpp index acc580e2aefdd63a3531e168e02b69c06aa855ca..fb2735d30ba206f7a6982f5c2fc5f820b054e478 100644 --- a/components/rgbd-sources/src/calibrate.cpp +++ b/components/rgbd-sources/src/calibrate.cpp @@ -119,12 +119,12 @@ bool Calibrate::_loadCalibration(cv::Size img_size, std::pair<Mat, Mat> &map1, s img_size_ = img_size; // TODO: normalize calibration - double scale_x = 1.0 / 1280.0; - double scale_y = 1.0 / 720.0; + double scale_x = ((double) img_size.width) / 1280.0; + double scale_y = ((double) img_size.height) / 720.0; Mat scale(cv::Size(3, 3), CV_64F, 0.0); - scale.at<double>(0, 0) = (double) img_size.width * scale_x; - scale.at<double>(1, 1) = (double) img_size.height * scale_y; + scale.at<double>(0, 0) = (double) scale_x; + scale.at<double>(1, 1) = (double) scale_y; scale.at<double>(2, 2) = 1.0; M1_ = scale * M1_; @@ -132,9 +132,10 @@ bool Calibrate::_loadCalibration(cv::Size img_size, std::pair<Mat, Mat> &map1, s P1_ = scale * P1_; P2_ = scale * P2_; - Q_.at<double>(0, 3) = Q_.at<double>(3, 2) * (double) img_size.width * scale_x; - Q_.at<double>(1, 3) = Q_.at<double>(3, 2) * (double) img_size.height * scale_y; - Q_.at<double>(3, 3) = Q_.at<double>(3, 3) * (double) img_size.width * scale_x; + Q_.at<double>(0, 3) = Q_.at<double>(0, 3) * scale_x; + Q_.at<double>(1, 3) = Q_.at<double>(1, 3) * scale_y; + Q_.at<double>(2, 3) = Q_.at<double>(2, 3) * scale_x; // TODO: scaling? + Q_.at<double>(3, 3) = Q_.at<double>(3, 3) * scale_x; // cv::cuda::remap() works only with CV_32FC1 initUndistortRectifyMap(M1_, D1_, R1_, P1_, img_size_, CV_32FC1, map1.first, map2.first);