opencv-undistort
官方文档
根据介绍不难理解此函数主要对图像进行畸变校正,newCameraMatrix作为输入参数主要用来控制输出图像的缩放的,由于畸常常会使一部分像素超出/缩进原尺寸,有时为了看到畸变全貌需要设置改参数,可以很方便使用cv::getOptimalNewCameraMatrix函数来设置该参数。
小例程
cv::Mat distort_img = cv::imread("..\\data\\undistort_image.jpg", 1);
cv::Mat cam_mat, dist_mat;
read_cam_param("..\\data\\undistort_image.camparam", cam_mat, dist_mat);
cv::Mat undistort_img, map1, map2;
//cv::initUndistortRectifyMap(cam_mat, dist_mat.t(), cv::Mat(), cv::getOptimalNewCameraMatrix(cam_mat, dist_mat, distort_img.size(), 1, distort_img.size(), 0),
// distort_img.size(), CV_16SC2, map1, map2);
//cv::remap(distort_img, undistort_img, map1, map2, cv::INTER_LINEA